系统架构设计-Redis设计-缓存穿透、缓存击穿、缓存雪崩

Redis 缓存穿透、缓存击穿、缓存雪崩 核心区别对比

先一句话定性,再给场景、原因、危害、解决方案对比,超好记。

  1. 缓存穿透 :查不存在的数据,缓存、数据库都没有,请求直打数据库。
  2. 缓存击穿 :热点 Key 过期瞬间,大量请求同时打到数据库。
  3. 缓存雪崩 :大量 Key 同时过期 / Redis 宕机,缓存整体失效,流量全部压垮数据库。

一、详细对比表

对比维度 缓存穿透 缓存击穿 缓存雪崩
核心场景 查询数据库根本没有的数据 单个热点 Key 缓存过期 大批量 Key 同时过期 / Redis 挂了
请求流向 缓存没 → 数据库也没 缓存刚好过期失效 → 全打 DB 缓存大面积失效 → 流量全冲 DB
触发原因 恶意请求、参数非法、空数据查询 热点 Key 设置相同过期时间 1. 批量 Key 过期时间集中2. Redis 宕机 / 断电 / 集群故障
攻击 / 影响范围 分散、恶意爬虫 / 黑客攻击 单点热点流量瞬间打崩 全局、大面积服务雪崩、DB 瘫痪
典型例子 查 id=-1、乱输手机号、不存在商品 ID 秒杀商品、首页热门商品 Key 过期 凌晨所有缓存统一 1 小时过期,整点集体失效

二、各自解决方案

1. 缓存穿透 解决

  • 缓存空值 / 空对象,设置短期过期
  • 布隆过滤器:拦截不存在的 Key,请求压根不到 Redis
  • 接口层参数校验,非法参数直接拦截
  • 黑名单过滤恶意请求

2. 缓存击穿 解决

  • 热点 Key 永不过期(不设置 expire)
  • 互斥锁(分布式锁):只放一个请求去查 DB、更新缓存
  • 逻辑过期:后台异步更新缓存,不删 Key

3. 缓存雪崩 解决

  • 过期时间加随机值,打散过期时间,避免集中失效
  • Redis 高可用:主从 + 哨兵 / 集群,避免单点宕机
  • 服务层限流、降级、熔断
  • 多级缓存:本地 Caffeine + Redis 二级缓存

三、最简记忆口诀

  • 穿透:查无此物,两头都空
  • 击穿:单点热点,过期瞬间
  • 雪崩:集体失效,全军覆没
相关推荐
lusklusklusk2 分钟前
SQL Server 为什么普通 SELECT 会阻塞 UPDATE?——行级 S 锁到表级 S 锁的锁升级原理与实验验证
数据库·mysql·oracle
辛迪聊物业数字化4 分钟前
智慧社区小程序落地避坑指南:3类物业方案选型+成本测算,线上服务零翻车
大数据·嵌入式硬件·百度·系统架构
Leo.yuan10 分钟前
企业业务人员如何独立完成数据分析?2026年自助BI工具选型与应用指南
大数据·数据库·人工智能
roman_日积跬步-终至千里11 分钟前
数仓开发的三层责任:业务定义、模型设计与 SQL 实现
数据库·数据仓库·sql·数据建模
瀚高PG实验室14 分钟前
瀚高数据库创建新数据库卡住问题排查
数据库·postgresql·瀚高数据库
瑶总迷弟32 分钟前
银河麒麟 V10 ARM64 安装 Oracle 19c 静默部署操作手册
数据库·oracle
飞浪纪元[FWC–FE]1 小时前
Qt 工程创建与 CMake / qmake 构建规范
开发语言·数据库·qt
Ivanqhz1 小时前
MoE + LLM 应用
数据库·人工智能·pytorch·python·深度学习·算法·1024程序员节
我不会起名字3221 小时前
Redis pipeline 用了反而更慢:3 类误用与正确的批量姿势
redis·pipeline·lua·rtt·批量
Tsuki_tl1 小时前
【总结】Redis五大数据类型应用场景及基本命令
数据库·redis·后端·缓存·缓存中间件·redis命令·redis 五大数据类型