**缓存击穿(Cache Penetration / 更常见叫“缓存击穿”指 Hot Key 失效)**通常是指:
某个热点 key 在缓存中突然失效(或过期),同时有大量并发请求访问该 key,导致请求直接打到数据库,造成数据库瞬时压力剧增。
✅ 结果:缓存未命中 → 全部查数据库
✅ 结果:某一时刻缓存“集体消失”
常见问题代码逻辑:
if cache == null:
data = db.query()
cache.set(data)
❌ 问题:
| 类型 | 原因 | 特点 |
|---|---|---|
| 击穿 | 热点 key 失效 | 单 key 高并发 |
| 穿透 | 查询不存在的数据 | 故意或异常请求 |
| 雪崩 | 大量 key 同时失效 | 系统性崩溃 |
if cache == null:
if tryLock():
data = db.query()
cache.set(data)
unlock()
else:
sleep + retry
expire = 30min + random(0~5min)
缓存击穿的本质是:热点数据失效 + 高并发 + 无保护地回源数据库。
如果你愿意,我也可以结合 Redis / Java / Go / 高并发架构 给你具体代码示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。