-
一个只缓存查得到的数据的接口,被人用大量不存在的 ID 反复查询,缓存形同虚设、请求全砸到数据库上,差点把库打垮:一次缓存穿透的深度复盘
商品详情接口前面挡着 Redis,平时 DB 压力很小,某天 DB QPS 突然暴涨几十倍、缓存命中率却跌到 0。抓参数一看,请求查的全是不存在的随机 ID。根因是 cache-aside 只缓存查得到的非空结果:查不存在的 ID 时缓存没有、DB 也查不到、null 又不写缓存,于是每次都必然穿透直达 DB,被海量不存在 ID 攻击就把库打垮——这就是缓存穿透。本文讲透穿透与击穿、雪崩的区别,给…- 0
- 0
-
布隆过滤器完全指南:从一次"随机ID刷接口把数据库打垮"看懂缓存穿透与概率型数据结构
2021 年我做一个用户系统的查询接口前端拿用户 ID 来查用户资料 QPS 不低怎么扛住这个查询量这件事我没多想就有了方案加缓存第一版我做得很顺手查询先走 Redis 缓存命中就直接返回没命中才查数据库查到了再回填进缓存就完事了本地压测环境一跑真不错第一次查走数据库之后全是缓存命中数据库的压力低得几乎看不见我心里很笃定缓存稳稳地挡在数据库前面所有查询都先走缓存数据库还能有什么压力可等这套查询接口…- 2
- 0
-
缓存穿透、击穿、雪崩完全指南:从一次"加了 Redis,数据库还是被打挂"看懂缓存防护
2022 年我做一个电商的商品详情接口。这个接口 QPS 很高首页搜索推荐到处都在调它。第一版我直接查数据库压测一上量数据库 CPU 就飙红。我马上想到加缓存查商品时先查 Redis 有就直接返回没有再查数据库查完写回 Redis。这套旁路缓存加上去效果立竿见影数据库 CPU 应声降下来。我当时心里很踏实有缓存挡着数据库稳了。可上线之后数据库还是三番五次地被打挂每次现象还不一样。第一次有人在疯狂查…- 0
- 0
-
海量数据处理完全指南:布隆过滤器、HyperLogLog 与 Count-Min Sketch
"上亿用户里这个用户访问过吗?""今天网站独立访客大约多少?""这个 IP 最近 1 分钟来了多少次?" —— 这类海量数据问题用普通数据结构(Set / HashMap)会内存爆炸。这篇文章把概率型数据结构讲透:布隆过滤器、HyperLogLog、Count-Min Sketch、TopK,在精度换空间上做巧妙权衡。 布隆过滤器(Blo…- 0
- 0
布隆过滤器
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!




