缓存穿透,是很多人 Redis 使用中最容易忽略,但却可能直接击垮数据库的致命问题。本篇我们彻底讲透:概念 → 原因 → 四大实战解法 → 生产级防御体系。
🚨 什么是缓存穿透?
查询一个不存在的数据 → 缓存 miss → 所有请求直接打到数据库 → 数据库瞬间压力飙升
📌 典型特征:
- 缓存命中率极低,但数据库 QPS 飙升
- 大量访问 ID 根本不存在(可能是恶意攻击)
- 热点接口异常慢 / MySQL CPU 100%
📌 为什么危险?
- 请求全部落 DB,Redis 等同未使用
- 恶意脚本可制造数百万请求 → 直接拖垮数据库
🧰 缓存穿透的四大终极解决方案
🔥 建议不是二选一,而是 组合拳 + 分层防御
① 布隆过滤器(最佳优先)
🎯 原理
布隆过滤器用于判断某值是否存在于集合中:
| 结论 | 说明 |
|---|---|
| 可能存在 | 存在误判 |
| 一定不存在 | 没有假阴性 |
👉 也就是说:不存在的数