**缓存击穿(Cache Breakdown)**通常是指:
某个热点 key 在缓存中过期的瞬间,大量并发请求同时打到数据库,导致数据库瞬间压力剧增。
典型流程如下:
⚠️ 注意:
缓存击穿 不是缓存中没有数据,而是一个热点 key 突然失效 + 高并发。
很多人容易混淆:
| 问题 | 原因 | 特点 |
|---|---|---|
| 缓存击穿 | 单个热点 key 失效 | 瞬时高并发 |
| 缓存雪崩 | 大量 key 同时失效 | 整体缓存失效 |
| 缓存穿透 | 查不存在的数据 | 永远不命中 |
SETNXif cache miss:
if tryLock():
data = db.query()
cache.set(data)
unlock()
else:
sleep / retry
✅ 有效防止并发击穿
❌ 有锁竞争成本
expireTime{
"data": "...",
"expireAt": 1710000000
}
✅ 无突发请求
❌ 实现稍复杂
✅ 简单
❌ 不适合所有业务
缓存击穿 = 热点 key 过期 + 高并发 + 无保护机制
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。