Redis分布式锁进阶第三十八篇

Redis分布式锁进阶第三十八篇:缓存穿透、击穿、雪崩 生产级完整解决方案

前言

前面篇章全部围绕Redis分布式锁进行深度讲解,本篇开始转入Redis缓存生产核心难题。缓存穿透、缓存击穿、缓存雪崩是面试必问、生产必踩的三大故障。本文保持连载简洁干货风格,直白讲清成因、风险、落地解决方案,全部为线上可直接使用的生产方案。

一、缓存穿透(查询不存在的数据)

1. 概念成因

用户请求的数据缓存没有、数据库也没有,请求直接穿透缓存,全部打到数据库。 常见场景:恶意伪造id、非法参数、空数据查询。

2. 危害

大量空请求压垮数据库,数据库频繁查询空数据,CPU飙升,正常业务SQL被阻塞。

3. 生产解决方案(由简到优)

  • 空值缓存:查询为空,依然缓存空数据,过期时间短(30s~5min),避免重复穿透。

  • 布隆过滤器:前置拦截,判断数据是否存在,不存在直接拦截,不访问Redis、数据库。

  • 参数校验:非法id、负数、空字符串直接在网关层拦截。

  • 限流防刷:单ip、单账号限制请求频率。

4. 优缺点说明

空值缓存实现最简单;布隆过滤器适合海量数据、高并发拦截;一般业务空缓存+参数校验足够使用。

二、缓存击穿(热点key过期)

1. 概念成因

某一个热点key突然过期,海量并发请求瞬间打到数据库,单节点压力爆炸。 典型场景:秒杀商品、爆款活动、首页热门数据。

2. 和穿透区别

穿透:查不存在数据;击穿:查存在数据,刚好key过期

3. 生产解决方案

  • 互斥锁(常用):Redis分布式锁,同一时间只允许一个线程查库,其他线程等待。

  • 热点key永不过期:取消expire,后台异步更新,避免主动过期。

  • 逻辑过期:数据内置过期时间,Redis不删除,后台异步刷新,业务永远有数据。

4. 业务选型

普通热点数据:永不过期;强一致性活动数据:分布式锁;高并发不准停机:逻辑过期。

三、缓存雪崩(大批量key同时失效)

1. 概念成因

大批量缓存key同一时刻集体过期,或者Redis宕机,大量请求瞬间压入数据库,造成数据库雪崩宕机。

2. 产生场景

  • 批量导入数据,过期时间设置一致;

  • Redis主从切换、宕机、断电;

  • 缓存热点集中,过期时间统一。

3. 生产解决方案

  • 过期时间加随机值:基础方案,打散过期时间,避免集中失效。

  • 多级缓存:本地Caffeine缓存 + Redis缓存,双层兜底。

  • Redis高可用:哨兵、集群部署,避免单机宕机。

  • 服务熔断降级:Redis异常时,直接返回默认数据、友好提示,不查库。

  • 定时预热缓存:高峰期前提前刷新热门key。

四、三者极简区别(面试必背)

类型 核心原因 攻击对象 最优方案
穿透 查询不存在数据 数据库 空缓存+布隆过滤器
击穿 单个热点key过期 数据库 分布式锁、永不过期
雪崩 大批量key同时失效 整套服务 随机过期+多级缓存+降级

五、生产通用缓存规范

  1. 所有缓存统一加随机过期时间,预防雪崩;

  2. 空数据务必缓存,时间不宜过长;

  3. 热门商品禁止固定过期时间,优先永不过期;

  4. 对外接口必须加限流、熔断、降级;

  5. 核心业务必须部署Redis集群,禁止单机上线;

  6. 禁止大量冷数据同时写入,防止批量过期。

相关推荐
广州灵眸科技有限公司7 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
憧憬成为web高手10 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学10 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
二宝哥11 小时前
CentOS 7.9 系统下 Redis 5.0.4 单机安装与源码编译安装指南
redis·centos
wWYy.11 小时前
分布式:数据复制
分布式
oradh12 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
z1234567898613 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD13 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo13 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
TlSfoward14 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php