缓存雪崩、击穿、穿透
参考文章
小林coding缓存篇(写的非常好,推荐阅读)
缓存雪崩
什么是缓存雪崩
缓存雪崩:大量缓存数据同时过期,或 Redis 故障宕机,导致大量请求全部去访问数据库,数据库压力过大,严重的会造成数据库宕机,从而产生一系列连锁反应,造成系统崩溃。
解决方法
针对大量数据同时过期:
- 均匀设置缓存过期时间
- 缓存加锁
- 后台更新缓存(例如缓存预热)
针对 Redis 故障宕机:
- 服务熔断或请求限流
- 构建 Redis 缓存高可靠集群
缓存击穿
什么是缓存击穿
缓存击穿和雪崩类似,可以认为击穿属于雪崩的一类。
缓存击穿:缓存中的某个热点数据过期,如果此时大量请求访问热点数据,会直接访问数据库,数据库容易被高并发的请求冲垮。
解决方法
- 缓存加锁
- 热点数据不设置过期时间,后台更新缓存
缓存穿透
什么是缓存穿透
缓存穿透:要访问的数据,即不在缓存中,也不在数据库中,此时大量请求导致数据库压力过大。
解决方法
- 限制非法请求
- 针对查询数据,在缓存中设置空值或默认值
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ShameYang's Blog!