资讯专栏INFORMATION COLUMN

缓存穿透,缓存击穿,缓存雪崩解决方案分析

Soarkey / 728人阅读

摘要:解决方案通过布隆过滤器拦截。对空结果进行缓存,但是过期时间很短,不超过分钟。缓存雪崩介绍缓存雪崩是指设置缓存采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到,瞬间压力过重雪崩。

缓存穿透 介绍

缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写,并且处于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。

在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。

解决方案

通过布隆过滤器拦截。

对空结果进行缓存,但是过期时间很短,不超过5分钟。

缓存雪崩 介绍

缓存雪崩是指设置缓存采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬间压力过重雪崩。

解决方案

采用同步或者队列的方式保证缓存的单线程写,从而避免失效时大量的并发请求落到底层储存系统上。

在缓存的失效时间基础上增加一个随机值,比如1-5分钟。

缓存击穿 介绍

对于一些设置了过期时间的key,如果这些key可能在某些时间点被超高并发地访问,是一种非常“热点”的数据。

缓存在某个点过期的时候,恰好在这个时间点对这个key有大量的并发请求过来,这些请求发现缓存过期一般都会从后端加载数据并回设到缓存,这个时候大并发的请求可能瞬间把后端DB压垮。

解决方案

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/62045.html

相关文章

  • 三大缓存问题及解决方案

    摘要:在某些查询中,可以将所有可能的查询条件放入这个集合,在查询之前使用这个集合对查询条件进行过滤,就可以避免缓存穿透的问题。解决方案二级缓存对于那些热度高的数据设置二级缓存,并且错开和一级缓存的失效时间,使请求不会同时穿透两层缓存去访问数据库 在我们的实际开发应用中,缓存机制的广泛存在,大大的提高了系统对数据库的请求承受阈值,但是在一些特定的场景下,需要去了解它可能出现的问题和对应的解决方...

    Simon 评论0 收藏0
  • 分布式系统关注点(18)——「缓存穿透」和「缓存雪崩」到底啥区别?

    摘要:不过,布隆过滤器有一个最大的缺点,也是其为了高效利用内存而付出的代价,就是无法确保的准确率。不过这种方式的优势是前面提到的,不会出现误差,而布隆过滤器的错误率会随着位数的增加而减少,会不断趋近于,但不会为。 ​如果第二次看到我的文章,欢迎文末扫码订阅我个人的公众号(跨界架构师)哟~ 本文长度为2805字,建议阅读8分钟。坚持原创,每一篇都是用心之作~ 有句话说得好,欲要使其毁灭,先要...

    tinyq 评论0 收藏0
  • redis相关问题

    摘要:若其他线程发现获取锁失败,则睡眠后重试。容易造成死锁问题布隆过滤器,迅速判断一个元素是否在一个集合中。将已存在的缓存放到布隆过滤器中,当黑客访问不存在的缓存时迅速返回避免缓存及挂掉。 redis理解 A.执行流程 showImg(https://user-gold-cdn.xitu.io/2019/1/11/1683aabdeb2fcc3a); 缓存雪崩 showImg(https:/...

    mist14 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<