-
一个被高频访问的热点缓存恰好过期的那一瞬间,几千个请求同时扑向数据库去重建它,瞬间把数据库打垮了:一次缓存击穿、热点 key 过期空窗的深度复盘
我有个被高频访问的热点数据放在缓存里、设了 5 分钟过期,平时读缓存命中一切顺滑。可某次监控突然报警数据库 CPU/连接数瞬间飙满、差点雪崩,恰好发生在那个热点缓存过期的那一刻。复盘那一瞬间才明白这是缓存击穿:那个 key 被每秒几千请求高频访问,当它到点过期从缓存消失的瞬间,几千个并发请求同时发现未命中、几乎同时全部扑向数据库去查数据重建缓存,本该由缓存挡住的几千 QPS 在这一瞬间全砸到数据库…- 0
- 0
-
一个只缓存查得到的数据的接口,被人用大量不存在的 ID 反复查询,缓存形同虚设、请求全砸到数据库上,差点把库打垮:一次缓存穿透的深度复盘
商品详情接口前面挡着 Redis,平时 DB 压力很小,某天 DB QPS 突然暴涨几十倍、缓存命中率却跌到 0。抓参数一看,请求查的全是不存在的随机 ID。根因是 cache-aside 只缓存查得到的非空结果:查不存在的 ID 时缓存没有、DB 也查不到、null 又不写缓存,于是每次都必然穿透直达 DB,被海量不存在 ID 攻击就把库打垮——这就是缓存穿透。本文讲透穿透与击穿、雪崩的区别,给…- 0
- 0
-
缓存集体过期压垮数据库:缓存雪崩避坑复盘
那是一次教科书级别的雪崩:某个流量高峰的午间我们的服务突然开始大面积超时,告警短信像下雨一样砸进群里。我冲上去一看监控触目惊心——数据库 CPU 瞬间飙到 100%,慢查询日志疯狂刷屏,大量请求堆积超时,紧接着因为请求都卡在数据库上线程被占满,整个服务也跟着雪崩式瘫痪了。最诡异的是出事前流量并没有暴涨,就是平平常常的午高峰,怎么会在某一个瞬间突然就被打垮?排查结果是一个我们完全没意识到的定时炸弹:…- 0
- 0
-
缓存集体过期压垮数据库:雪崩击穿穿透避坑
一次让我记忆犹新的线上雪崩:服务前面挡着一层 Redis 缓存,绝大多数读请求都打在缓存上,数据库平时悠闲得很。某天上午十点整监控突然炸了,数据库 CPU 瞬间飙到 100%、响应从几毫秒蹦到几秒、大量请求超时、整个服务几乎瘫痪,可流量并没暴涨多少,就是平日水平。盯着曲线复盘才发现一个关键巧合:故障爆发的十点整,正是前一天凌晨批量预热缓存的那批数据集体到期的时刻——那批缓存头天同一时间一次性灌进 …- 0
- 0
-
缓存三连击实战:穿透、击穿、雪崩,一个热点 key 如何打挂数据库
那次大促,数据库 CPU 垂直拉到 100%、接口大面积超时、上游服务跟着雪崩,我们第一反应是扩容却根本来不及。复盘才发现根因小得哭笑不得:一个被几万人盯着的热点商品缓存恰好在那一刻过期了——几万并发瞬间穿过缓存把同一条查询砸了几万次,这就是缓存击穿。这篇从这个一个 key 打挂数据库的事故讲起,把缓存三大杀手穿透、击穿、雪崩怎么区分、各自怎么治讲透:singleflight 与分布式锁防击穿、空…- 4
- 0
-
布隆过滤器完全指南:从一次"随机ID刷接口把数据库打垮"看懂缓存穿透与概率型数据结构
2021 年我做一个用户系统的查询接口前端拿用户 ID 来查用户资料 QPS 不低怎么扛住这个查询量这件事我没多想就有了方案加缓存第一版我做得很顺手查询先走 Redis 缓存命中就直接返回没命中才查数据库查到了再回填进缓存就完事了本地压测环境一跑真不错第一次查走数据库之后全是缓存命中数据库的压力低得几乎看不见我心里很笃定缓存稳稳地挡在数据库前面所有查询都先走缓存数据库还能有什么压力可等这套查询接口…- 2
- 0
-
缓存穿透、击穿、雪崩完全指南:从一次"加了 Redis,数据库还是被打挂"看懂缓存防护
2022 年我做一个电商的商品详情接口。这个接口 QPS 很高首页搜索推荐到处都在调它。第一版我直接查数据库压测一上量数据库 CPU 就飙红。我马上想到加缓存查商品时先查 Redis 有就直接返回没有再查数据库查完写回 Redis。这套旁路缓存加上去效果立竿见影数据库 CPU 应声降下来。我当时心里很踏实有缓存挡着数据库稳了。可上线之后数据库还是三番五次地被打挂每次现象还不一样。第一次有人在疯狂查…- 0
- 0
-
缓存穿透击穿雪崩完全指南:从一次"加了缓存数据库反而被打挂"看懂三大缓存问题
2020 年我维护一个商品详情服务,最初每个请求都直接查数据库,流量一大数据库就吃力。我给它加了一层 Redis 缓存:查询时先看缓存,命中就直接返回,没命中再查数据库、把结果写回缓存。上线后命中率稳定在 95% 以上,数据库负载降到原来的零头,我以为加了缓存数据库就高枕无忧了。可后来接连出过三次事故每次数据库都被打挂:第一次有人写脚本拿一堆不存在的商品 ID 狂刷,这些 ID 数据库查不到缓存也…- 0
- 0
-
Redis 缓存三大杀手完全指南:从一次"缓存挂了数据库被打垮"看懂穿透、击穿、雪崩
2022 年我给一个高 QPS 的商品详情接口前面加了一层 Redis 缓存:先查缓存、没有再查 MySQL 回填。加完平时稳得很,直到双十一前一次压测我亲眼看着事故发生——流量一上来 MySQL 的 CPU 几秒钟冲到 100%,慢查询堆积、接口大面积超时、整条链路雪崩。复盘很久才想明白:我以为"加了缓存就等于数据库被保护",可缓存这层保护是有漏洞的。本文把缓存的三把刀一个个…- 0
- 0
-
一个热点 key 过期瞬间打挂数据库:一次 Redis 缓存击穿与雪崩穿透的复盘
一个爆款商品详情页一天几百万访问,商品信息做了缓存第一次查库后塞进 Redis 设一小时过期,上线后数据库负载稳得很,可某天起监控出现诡异的规律性抖动每隔约一小时数据库 CPU 毫无征兆瞬间飙到 100% 持续两三秒接口大面积超时然后自己恢复,周期恰好等于缓存过期时间。排查梳理:数据库被打挂第一刀先看它前面的缓存挡板还在不在,很多时候不是 DB 自己不行是挡板突然失效让本该被挡的流量全涌向 DB,…- 0
- 0
缓存穿透
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!










