news 2026/3/11 9:56:43

第十五课:缓存三大灾难——穿透、击穿、雪崩的系统解法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第十五课:缓存三大灾难——穿透、击穿、雪崩的系统解法

这一课是Redis 真正进入工程阶段的标志
前一课你学的是“怎么用缓存”,
这一课学的是:

缓存出问题时,系统怎么不崩。

很多公司线上事故,80% 都和这三件事有关。

一、为什么会有“缓存灾难”?

理想情况:

请求 → Redis → 返回

现实情况:

请求绕过 Redis → 打爆 MySQL

当 Redis 失效或设计不当,
数据库瞬间被冲垮。

二、缓存穿透(Cache Penetration)

现象

用户请求一个数据库根本不存在的数据

例如:

/product/99999999

Redis 没有
MySQL 也没有
每次都查数据库。

攻击者可以疯狂请求不存在 ID,
数据库直接被打爆。

解决方案

1. 空值缓存(最常用)

if (db查不到) { redis.set(key, "null", 60秒); }

2. 布隆过滤器(进阶)

提前判断:

这个 ID 是否可能存在

不存在直接拒绝。

三、缓存击穿(Cache Breakdown)

现象

某个热点 Key 过期
瞬间大量请求同时打到数据库。

例如:

热门商品详情

TTL 到期那一秒,
几万请求直冲 MySQL。

解决方案

1. 互斥锁(最经典)

只允许一个线程查数据库:

SETNX lock

其他线程等待缓存回填。

2. 永不过期 + 后台更新

缓存不设置 TTL,
由后台定时刷新。

四、缓存雪崩(Cache Avalanche)

现象

大量 Key同一时间过期

10万缓存 → 同时失效

瞬间全部请求冲数据库。

解决方案

1. TTL 随机化

TTL = 基础时间 + 随机值

避免同一时刻过期。

2. 多级缓存

本地缓存 + Redis + MySQL

五、三者对比一眼看懂

问题本质场景
穿透查不存在恶意攻击
击穿热点过期高并发
雪崩批量过期大规模缓存

六、工程师级一句话记忆

  • 穿透:查空气

  • 击穿:热点炸

  • 雪崩:集体死

下一篇:

第15课 · 实战篇:缓存三大灾难落地防御(穿透/击穿/雪崩)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/3 12:08:20

第十五课 · 实战篇:缓存三大灾难落地防御(穿透/击穿/雪崩)

第14课我们学会“怎么用缓存”,但真正线上要命的是:缓存一出问题,数据库会不会被打爆?这篇用最小实战把三大灾难的工程解法写到代码层面: 穿透 → 击穿 → 雪崩,每个都给你一段“可复用模板”。0. 实战目标…

作者头像 李华
网站建设 2026/3/4 7:41:21

从铁匠铺到智能工厂:校平机技术的千年进化史

一、最早的校平师:人类的双手与简单工具1.1 铁匠时代的智慧在工业革命之前,金属板材的平整完全依赖手工。铁匠们发现几个关键诀窍:热锤法:将金属加热至红热状态(约800-1000C),此时金属内部晶粒发…

作者头像 李华
网站建设 2026/3/7 4:27:55

【小程序毕设全套源码+文档】基于Android的汉服交易小程序的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/3/10 9:10:28

《从文档到自动化:API可信源全流程构建指南》

客户端SDK的开发往往需要手动对接接口文档,不同端侧的开发人员对同一文档的理解存在差异,导致各端SDK的接口调用逻辑、异常处理方式出现不一致,后续的版本维护也需要多端同步推进,产生大量的重复劳动。这些日常开发中反复出现的问…

作者头像 李华
网站建设 2026/3/3 18:24:47

温度、电压、外部信号采集,ADC帮你全搞定

今天,我们将分享Air8000系列工业引擎内置的ADC接口及其demo示例,带你体验简单高效的LuatOS应用开发。一、模数转换ADCADC模拟/数字转换器,是指将连续变量的模拟信号转换为离散的数字信号的器件。 硬件产品中的ADC接口主要用来检测模拟电压信号…

作者头像 李华