Tidyverse 2.0报告自动化上线倒计时:3个未公开的breaking change正在 silently break你的旧pipeline(附迁移checklist v2.0.3)
2026/5/1 18:20:54
这一课是Redis 真正进入工程阶段的标志。
前一课你学的是“怎么用缓存”,
这一课学的是:
缓存出问题时,系统怎么不崩。
很多公司线上事故,80% 都和这三件事有关。
理想情况:
请求 → Redis → 返回现实情况:
请求绕过 Redis → 打爆 MySQL当 Redis 失效或设计不当,
数据库瞬间被冲垮。
用户请求一个数据库根本不存在的数据。
例如:
/product/99999999Redis 没有
MySQL 也没有
每次都查数据库。
攻击者可以疯狂请求不存在 ID,
数据库直接被打爆。
if (db查不到) { redis.set(key, "null", 60秒); }提前判断:
这个 ID 是否可能存在不存在直接拒绝。
某个热点 Key 过期,
瞬间大量请求同时打到数据库。
例如:
热门商品详情TTL 到期那一秒,
几万请求直冲 MySQL。
只允许一个线程查数据库:
SETNX lock其他线程等待缓存回填。
缓存不设置 TTL,
由后台定时刷新。
大量 Key同一时间过期。
10万缓存 → 同时失效瞬间全部请求冲数据库。
TTL = 基础时间 + 随机值避免同一时刻过期。
本地缓存 + Redis + MySQL| 问题 | 本质 | 场景 |
|---|---|---|
| 穿透 | 查不存在 | 恶意攻击 |
| 击穿 | 热点过期 | 高并发 |
| 雪崩 | 批量过期 | 大规模缓存 |
穿透:查空气
击穿:热点炸
雪崩:集体死
下一篇:
第15课 · 实战篇:缓存三大灾难落地防御(穿透/击穿/雪崩)