美文网首页
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