缓存击穿(Cache Breakdown / Hot Key Expiration)是指:某个热点 key 在缓存中过期的瞬间,大量并发请求同时打到数据库,造成数据库瞬时压力剧增甚至崩溃。
下面从「告警触发时的应急处理」和「长期防范方案」两个层面来说明。
当收到缓存击穿告警(如 DB QPS 飙升、热点 key 命中率骤降):
思想:只有一个线程去查 DB,其他线程等结果。
if cache miss:
if tryLock(key):
data = db.query()
cache.set(key, data, ttl)
unlock(key)
else:
sleep(short)
retry cache
✅ 优点:实现简单、效果好
❌ 缺点:有锁竞争,高并发下略有延迟
思想:缓存不真过期,而是记录“逻辑过期时间”。
{
"value": "...",
"expireTime": 1710000000
}
✅ 优点:无锁、性能好
✅ 适合:热点只读数据(商品、配置)
✅ 适合:极热 key(如首页、爆款) ❌ 需注意:数据一致性
请求 → LocalCache → Redis → DB
缓存击穿防范 = 热点 key 不过期或逻辑过期 + 单线程回源 + 多级缓存 + 限流兜底
如果你愿意,可以告诉我:
我可以给你一套更贴合你系统的具体方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。