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

Redis 缓存击穿、缓存穿透、缓存雪崩

作者: 北京的天空 | 来源:发表于2023-05-12 11:16 被阅读0次

    缓存穿透:访问一个不存在的key,导致直接访问DB,数据量很大时导致,数据库挂掉

    解决方案
    1、缓存空置,设置较短的过期时间,直接返回给请求端
    2、采用布隆过滤器,使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤;
    3、拦截器,id<=0的直接拦截
    4、利用互斥锁,缓存失效的时候,先去获得锁,得到锁了,再去请求数据库。没得到锁,则休眠一段时间重试
    5、采用异步更新策略,无论key是否取到值,都直接返回。value值中维护一个缓存失效时间,缓存如果过期,异步起一个线程去读数据库,更新缓存。需要做缓存预热(项目启动前,先加载缓存)操作。
    

    缓存击穿:访问一个存在的key,在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到DB,造成瞬时DB请求量大、压力骤增。

    解决方案
    (1)设置热点数据永远不过期。
    (2)加互斥锁。
    

    缓存雪崩:同一时间有大量请求,缓存中没有数据,导致直接存数据库中读取,大量请求导致拖垮数据库

    相关文章

      网友评论

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

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