ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

缓存穿透与缓存雪崩

2021-03-13 23:29:07  阅读:174  来源: 互联网

标签:缓存 布隆 bitmap 穿透 雪崩 key 过滤器 utm


缓存穿透

缓存系统,一般流程都是按照key去查询缓存,如果不存在对应的value,就去后端系统(例如:持久层数据库)查找。如果key对应的value是一定不存在的,并且对该key并发请求量很大,就会对后端系统造成很大的压力,这就叫做缓存穿透。
正常请求:
在这里插入图片描述
正常请求 缓存击穿时:
在这里插入图片描述
缓存击穿

如何避免

  1. 缓存空结果

对查询结果为空的情况进行缓存,缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存。

布隆过滤器

采用布隆过滤器,guava有实现api,或者使用redis的bitmap。将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。布隆过滤器对于固定的数据可以起到很好的效果,但是对于频繁更新的数据,布隆过滤器的构建会面临很多问题。另外布隆过滤器是有判断误差的,网上有很多详细的介绍,请读者自行搜索即可。
在这里插入图片描述
缓存雪崩
当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力。

如何避免

  1. 设置随机过期时间

不同的key,设置不同的过期时间,让缓存失效时间分散开,比如可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低。

  1. “永远不过期”

参考资料:

  1. https://www.toutiao.com/i6720904825271222792/?tt_from=mobile_qq&utm_campaign=client_share&timestamp=1615648343&app=news_article&utm_source=mobile_qq&utm_medium=toutiao_android&use_new_style=1&req_id=202103132312230101511740764447973E&share_token=cc20597e-d730-421c-93bb-6a1c9538467c&group_id=6720904825271222792

标签:缓存,布隆,bitmap,穿透,雪崩,key,过滤器,utm
来源: https://blog.csdn.net/alpha_love/article/details/114767709

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有