题目13:缓存穿透、击穿、雪崩
📊 评分:— | 📅 完成时间:待完成
📝 题目
请分别解释缓存穿透、缓存击穿、缓存雪崩是什么。它们的区别是什么?在项目里通常怎么治理?
💬 我的回答
📖 参考答案
一、缓存穿透
- 查询一个数据库中本来就不存在的数据
- 缓存永远 miss,请求持续打到数据库
治理方式:
- 缓存空值
- 布隆过滤器
- 参数校验
二、缓存击穿
- 某个热点 key 失效瞬间,大量请求同时打到数据库
治理方式:
- 热点 key 永不过期
- 互斥锁 / singleflight
- 提前预热
三、缓存雪崩
- 大量 key 在同一时间失效
- 或缓存服务整体不可用
治理方式:
- 过期时间加随机值
- 多级缓存
- 限流降级
- Redis 高可用
🎯 面试标准话术
"穿透是查不到,击穿是热点 key 过期,雪崩是大面积失效或缓存整体故障。三者都可能把流量打到数据库,但成因和治理手段不同,面试时最好分别举例。"