如何理解Redis缓存穿透、缓存击穿、缓存雪崩?(面试必问)

本文探讨了缓存系统中常见的三大问题——缓存穿透、缓存击穿和缓存雪崩,以及针对这些问题提出的解决方案。缓存穿透通过设置空值缓存和白名单来防止;缓存击穿可通过预先设置热门数据、实时调整过期时间和使用锁来避免;缓存雪崩则建议采用多级缓存、时间分散和锁机制来缓解。这些策略有助于保障系统的稳定性和高可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缓存穿透:访问的数据缓存找不到,一直转而发送到数据库 解决方案:设置空值缓存,设置白名单,实时监控,通过bitmap的位运算进行存储。

缓存击穿key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。也就是一个key过期,一直访问数据库

解决方案1)预先设置热门数据:在redis高峰访问之前,把一些热门数据提前存入到redis里面,加大这些热门数据key的时长
(2)实时调整:现场监控哪些数据热门,实时调整key的过期时长
(3)使用锁:先判断值是否为空再让他进来与否

缓存雪崩设置多个级别的缓存架构,时间来得及缓冲、使用锁的机制、设置一个过期时间标志来通知、将过期时间分散,比如5分钟、5.01分钟等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值