美文网首页
Redis缓存穿透,击穿,雪崩

Redis缓存穿透,击穿,雪崩

作者: lenny611 | 来源:发表于2021-07-01 17:17 被阅读0次

    缓存穿透:即数据库没有该条数据,Redis也没有,这时候该无效请求就会直接打到数据库上,影响数据库性能,严重情况下会拖垮数据库。如下图所示:

    缓存穿透
    解决方案:
    1.null key,把null key也作为一个有效请求,从数据库返回;
    2.布隆过滤器
    3.给无效,重复的请求增加锁(因为串行化的原因,并发请求会一直争抢锁),抢到锁的请求才能去查询数据库,这样能阻挡大部分请求。

    缓存击穿:数据库存在记录,但是Redis没有,如下图

    缓存击穿
    解决方案:
    1.setnx;

    缓存雪崩:大量key同时失效,会导致请求直接压在数据库上,如下图

    image.png
    解决方案:
    1.非时点型——随机设置key时间
    2.时点型(比如零点过期)——业务延迟过期时间,或者依赖缓存穿透方案。

    缓存预热:
    提前加载数据到Redis中,但哪一部分数据是热数据?
    需要提前统计哪部分数据是热数据,否则可能会导致缓存穿透,击穿等情况。
    同时开发的时候,对没有预热的数据进行加锁处理(参考方案3),避免穿透和击穿等情况。

    相关文章

      网友评论

          本文标题:Redis缓存穿透,击穿,雪崩

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