踩坑:Redis 缓存「查不到就打到 DB」穿透与击穿的差别
·
现象
热点 key 或 恶意随机 ID 查询导致 DB 被打爆;或缓存集体过期瞬间 雪崩。
根因
- 穿透:key 根本不存在,缓存也 miss,每次穿透到 DB。
- 击穿:热点 key 过期瞬间大量请求打 DB。
- 雪崩:大量 key 同时过期。
常见踩坑
- 对不存在 key 不缓存(应短期缓存 空值 或返回哨兵)。
- TTL 全设同一时刻,无人为抖动。
解决
- 穿透:布隆过滤器或 空值缓存(短 TTL);非法输入前置校验。
- 击穿:互斥锁重建、热点永不过期+异步刷新、单飞(singleflight)。
- 雪崩:TTL 加随机抖动、多级缓存、限流。
总结
三件套分清名词:穿透查不到、击穿热 key、雪崩集体过期——对策不一样。
更多推荐




所有评论(0)