美文网首页
redis的雪崩、穿透、击穿

redis的雪崩、穿透、击穿

作者: 守望者_0173 | 来源:发表于2020-01-17 08:44 被阅读0次

    什么是缓存穿透

    一般的缓存系统,都是根据key值去缓存查询,如果不存在对应的key值,就应该去数据库中查询。这个时候,如果请求的并发量很大,就会对后端的数据库系统造成很大的压力。这就叫缓存穿透。简单理解是:缓存value为空;并发量很大,对数据库造成很大压力。

    造成原因

    1.业务自身代码出现或者数据出现问题。
    2.一些恶意攻击、爬虫造成大量空值,此时会对数据库造成很大压力。

    解决办法

    1.设置布隆过滤器,将所有可能存在的哈希key值放入到一个很大的bitmap中,一个哈希key在bitmap中不存在的就进行拦截,从而避免了对底层存储系统的查询压力。
    2.在缓存中设置一个空值的key,过期时间要设置短一点,不超过5分钟。

    雪崩

    缓存在同一时间内key值大量失效,造成大量的请求瞬间都落在了数据库上导致连接异常。

    解决办法

    1.建立备份缓存,缓存A和缓存B,A设置超时时间,B不设值超时时间,先从A读缓存,A没有读B,并且更新A缓存和B缓存;
    2.设置缓存超时时间的时候加上一个随机的时间长度,比如这个缓存key的超时时间是固定的5分钟加上随机的2分钟,酱紫可从一定程度上避免雪崩问题;

    相关文章

      网友评论

          本文标题:redis的雪崩、穿透、击穿

          本文链接:https://www.haomeiwen.com/subject/dbrfzctx.html