连载中 16/16

收官复盘:一张作战地图串起整个系列

2026-05-23 · 8745 阅读 · 0 评论 · 0 赞

收官,但不撤桌

从「接口 3 秒」一路写到热 key,这个系列主体内容齐了。收官这一篇不做知识复读——十六篇的细节都在各自的文章里,这里只做一件事:发一张作战地图。以后线上出了缓存相关的状况,先翻这张表,找到症状对应的篇目和第一动作,再决定要不要把整篇精读。

第一张地图:出事翻哪篇

症状翻哪篇第一动作
接口太慢,想上缓存第 1 篇先量耗时,再动手
选不好缓存模式第 2 篇默认 Cache Aside
key 越积越多、结构混乱第 3 篇定命名规范,拆大 key
恶意请求查不存在的数据第 4 篇参数校验 + 空值缓存
某个 key 过期瞬间被打爆第 5 篇互斥锁或逻辑过期
大批 key 同时失效第 6 篇随机 TTL + 多级缓存
改了数据缓存没生效第 7 篇先改库,再删缓存
定时任务重复执行第 8 篇SET NX EX + Redisson
内存告警,key 不消失第 9 篇查淘汰策略与大 key
重启后缓存冷启动雪崩第 10 篇RDB + AOF 混合
读写分离后读到旧数据第 11 篇关键读走主库
主库挂了要人肉切换第 12 篇上哨兵,奇数节点
内存装不下了第 13 篇Cluster 哈希槽分片
慢命令拖垮全站第 14 篇scan 替代 + 慢日志排查
流量全砸在一个 key 上第 15 篇本地缓存 + key 打散

第二张地图:按生命周期读系列

如果把这系列当一本书读,顺序是精心排过的:

  • 动工前(1-3):量好耗时再缓存,选对模式,设计好 key 和容量——地基决定后面省多少心。
  • 守住三大经典故障(4-6):穿透、击穿、雪崩,面试和实战的双高峰。
  • 写路径与并发(7-8):一致性是缓存最日常的坑,分布式锁是最容易被简化出错的组件。
  • 底层机制(9-10):过期删除、内存淘汰、持久化——解释很多「玄学现象」的源头。
  • 架构演进(11-13):主从复制 → 哨兵 → 集群,三步走完高可用与容量扩展。
  • 性能与热点(14-15):单线程模型的软肋与补丁,热 key 的组合拳。

贯穿全系列的三条心法

一、缓存不是真相源。真相永远在数据库里,Redis 里的任何东西都应该可以随时重建。空值缓存是防穿透(第 4 篇),「先改库再删缓存」是保一致(第 7 篇),限流降级是保命(第 6 篇)——三件事背后是同一句话:缓存丢了可以重建,数据丢了没法交代。

二、每个机制都标价。互斥锁有锁超时的坑(第 5 篇),逻辑过期有脏读,本地缓存有内存和一致窗口,LFU 淘汰有计数开销,异步删除有释放窗口(第 9 篇)。技术选型不是挑「最好的方案」,是挑「付得起的代价」。

三、重要结论别让单点拍板。解锁要校验 requestId(第 8 篇),哨兵判死刑要多数派(第 12 篇),脑裂要写入限流兜底——单点的判断无论多聪明,都要给个否决机制。

最后一份礼物:上线检查清单

可以直接抄进团队的 Wiki:

  • 所有 key 设过期时间(例外走白名单,第 3 篇);
  • 淘汰策略按业务定,缓存用途默认 allkeys-lfu(第 9 篇);
  • 生产禁用 keys,批量读写用 Pipeline(第 14 篇);
  • 慢日志阈值 10 毫秒常开,纳入巡检(第 14 篇);
  • 防穿透三件套就位:参数校验、空值缓存、布隆过滤器按需(第 4 篇);
  • 大 key 定期扫描,热点接口有本地缓存预案(第 3、15 篇);
  • 一致性统一「先改库再删缓存」,读写分离场景补延迟双删(第 7 篇);
  • 持久化用 4.0+ 混合模式,重启演练进季度计划(第 10 篇);
  • 关键读走主库,主从 lag 进监控大盘(第 11 篇);
  • 内存水位 70% 告警,容量按增长速率提前扩(第 13 篇)。

十六篇,一次接口优化引发的搬家记,到这里就写完了。评论区常聊到「下一个系列写什么」——候选名单里有 MySQL 索引与事务、消息队列、分布式 ID,想看哪个,或者有别的题目,评论区说一声。

这个系列就到这。咖啡馆的灯还亮着,欢迎常来。

503

10 年全栈工程师 · 503咖啡馆主理人

#Redis#缓存#系列复盘#架构#最佳实践

评论 (0)

相关推荐

连载中 12/20

排查四件套:jstack、jmap、jstat、jcmd 的实战分工

jstack 看线程在干什么,jmap 看堆里装了什么,jstat 看运行时在变什么,jcmd 是统一入口。四把刀各管一段,配合着用没有查不动的现场。

#jstack#jmap#jstat#jcmd#排查工具
2026-09-16 · 5 阅读 · 0 评论 · 0 赞
连载中 11/20

GC 日志:把回收过程翻译成人话

一行 GC 日志里塞着七种信息:谁触发的、收了哪、停了多久、活了哪些。加上 -Xlog 配置,再加上日志分析工具,GC 不再是只能盯监控曲线的黑盒。

#GC日志#Xlog#日志分析#GC监控#Full GC排查
2026-09-16 · 13 阅读 · 0 评论 · 0 赞
连载中 10/20

ZGC:亚毫秒停顿是怎么炼成的

百 G 大堆停顿不到一毫秒,靠的是把搬家全部挪到并发阶段——着色指针让引用自带状态,读屏障让搬运中的对象依然可访问。代价是吞吐与内存,收益是停顿与堆大小解耦。

#ZGC#着色指针#读屏障#亚毫秒停顿#分代ZGC
2026-09-15 · 8 阅读 · 0 评论 · 0 赞