缓存三大坑:穿透 + 雪崩 + 击穿实战复盘——每个都能让数据库瞬间崩掉
引言 线上告警炸了: [P1] MySQL CPU 100% [P1] 应用接口 P99 5s [P1] 数据库连接池打满 打开 Grafana一看: Redis 命中率从 95% 掉到 30% MySQL QPS 从 2 千飙到 8 万 应用线程池全满 典型的缓存失效问题。但具体是哪种? 缓存失效有三种典型形态——穿透、雪崩、击穿,每个都能让数据库瞬间崩溃,但原因和解决方案完全不同。 这篇文章把三个真实事故合并在一起复盘,每个坑附事故场景、排查过程、代码方案。看完这篇,下次再遇到你能 5 分钟定位是哪一种。 一、先搞清三个坑的区别 很多人把这三个概念搞混。一张表说清: 概念现象根因典型场景 穿透查的数据在缓存和 DB 都没有数据不存在恶意攻击、爬虫乱查 ID 雪崩大量缓存同时失效过期时间相同批量预热后统一过期 击穿单个热点 Key 失效瞬间热点 + 过期秒杀商品、首页推荐 记忆口诀: 穿透:查没有的 → DB 被"打穿" 雪崩:集体失效 → DB 被"压塌" 击穿:热点失效 → DB 被"击穿" 二、事故一:缓存穿透——压垮 DB 的隐形杀手 2.1 事故复盘 ....