穿透 · 击穿 · 雪崩 — 动态流程图解析
查询一个 根本不存在 的数据,缓存查不到、数据库也查不到。 每次请求都穿过缓存直打数据库,若恶意大量请求,数据库将被压垮。
一个 超热点 key 在高并发时突然过期,大量并发请求同时涌入数据库查询同一条数据。
大量缓存 key 同时集中过期,或者 Redis 服务宕机,导致大量请求直怼数据库,引发级联崩溃。
| 维度 | 🌊 缓存穿透 | ⚡ 缓存击穿 | ❄️ 缓存雪崩 |
|---|---|---|---|
| 数据是否存在 | ❌ 不存在 | ✅ 真实存在 | ⚠️ 大量存在 |
| 触发原因 | 查询不存在的ID | 热点key突然过期 | 大量key同时过期 / Redis宕机 |
| 受影响范围 | 单个查询维度 | 单个热点key | ⚠️ 全局大范围 |
| 并发特征 | 持续稳定打DB | 瞬间并发峰值 | 持续大规模冲击 |
| 破坏力 | 🔴 高(可被攻击) | 🟠 中高 | 🔴🔴 极高(系统崩溃) |
| 核心解决方案 | 布隆过滤器 空值缓存 |
互斥锁 逻辑过期 |
TTL随机化 多级缓存+限流 |