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

三、最简记忆口诀

  • 穿透:查无此物,两头都空
  • 击穿:单点热点,过期瞬间
  • 雪崩:集体失效,全军覆没
相关推荐
@insist12321 分钟前
系统集成项目管理工程师-信息和文档管理
网络·数据库·软考·系统集成项目管理工程师·软考中项·软件水平考试
残 风2 小时前
PostgreSQL 存储机制详解
数据库·postgresql·开源·数据库开发
JacksonMx2 小时前
Java CompletableFuture 异步编程实战:从入门到架构师避坑指南
linux·数据库·python
tachibana23 小时前
性能指标的口径选择
数据库·人工智能·架构·大模型·llm
风流 少年3 小时前
Spring AI 2.0:阿里云百炼平台(智能体应用)
redis·spring·阿里云
肠畔码农3 小时前
深度解密 Redis 分布式锁:从单机原子语义到集群架构博弈
redis·分布式·架构
机器人梦想家3 小时前
具身机器人视觉服务的异步回调与并发控制
数据库·算法·机器人
小妖同学学AI4 小时前
开源向量数据库的王者:Milvus 深度解析,专为 AI 应用打造的云原生搜索引擎!
数据库·开源·milvus
l1258654 小时前
# RAG上线评估指标体系:六大核心指标与压测实战全解析
数据库·人工智能·python·mysql·langchain·milvus
宠友信息5 小时前
IM系统开发技术路线分析,即时通讯源码助力快速搭建聊天应用
java·spring boot·redis·websocket·mysql·uni-app·vue