系统架构设计-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 二级缓存

三、最简记忆口诀

  • 穿透:查无此物,两头都空
  • 击穿:单点热点,过期瞬间
  • 雪崩:集体失效,全军覆没
相关推荐
用户3169353811831 天前
Java连接Redis
redis
倔强的石头_1 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab2 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence2 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神2 天前
三、用户与权限管理
数据库·mysql
坏孩子的诺亚方舟3 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
小小工匠3 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
麦聪聊数据3 天前
数据服务化时代:企业数据能力输出的核心路径
数据库
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
DARLING Zero two♡3 天前
【MySQL数据库】数据类型与表约束
数据库·mysql