Redis 出问题时,最容易陷入两个极端:要么只看慢日志,要么直接怀疑网络。真正有效的排查要从症状出发,把客户端、命令、key、内存、复制、磁盘和网络串起来。

同样是 RT 升高,原因可能是慢命令、热 key、输出缓冲、fork、AOF fsync、主从延迟、连接池耗尽或网络抖动。没有路径图,就会在现象之间乱跳。

先把机制边界说清楚

这一篇是整个系列的收束:不再展开单个机制,而是把前面所有机制变成排查顺序。目标是让你拿到报警后知道先看什么、后看什么。

整体路径

Redis 线上问题排查路径图

上面这张图先把主线铺开:从症状入口出发,逐层收敛到命令、key、内存和拓扑。排查的关键不是背命令,而是先定位影响面,再沿客户端→网络→主线程→内存→磁盘→拓扑这条链路找证据。

底层机制

  • 客户端 RT 是入口指标,但必须和 Redis 内部 latency、slowlog 对齐。
  • 慢命令要结合 key 大小和返回量判断,不能只看命令复杂度。
  • 内存问题要拆成数据增长、碎片、缓冲区、fork COW 和淘汰策略。
  • 高可用问题要同时看复制 offset、Sentinel/Cluster 状态和客户端重定向。

这些机制放在一起看,就能理解 Redis 排查为什么强调「先定位影响面」——同样一个延迟升高,根因可能落在命令、内存、磁盘、复制、网络任何一个位置。

取舍与边界

Redis 排障的关键是分层:客户端、网络、服务端主线程、内存、磁盘、高可用拓扑。任何单指标都只能提示方向,不能直接给结论。

典型问题:用机制化例子排查

  • 先确认影响面:单 key、单节点、单业务、还是全实例。
  • 延迟类问题依次看客户端 RT、LATENCY DOCTORSLOWLOG(默认阈值 slowlog-log-slower-than 10000 微秒即 10ms0 记录所有命令,负数关闭)、命令分布和 key 大小。
  • 内存类问题依次看 INFO memory、big key、淘汰、碎片和输出缓冲。
  • 复制和集群类问题看 offset、lag、MOVED/ASK、slot 倾斜和故障转移日志。

收束:一句判断

Redis 稳定性不是背命令表,而是把机制串成排查闭环。


关于十三Tech

我是十三,All in AI Agent 方向的架构师,专注 AI 工程实践。

我相信 AI 是程序员的最佳搭档,也希望帮助每一位开发者更好地驾驭 AI。

如果你想继续跟完这套「图解 Redis」,欢迎关注公众号 「十三Tech」。后续会继续按数据结构、底层机制、持久化、高可用和实战排查这条线更新。

十三Tech公众号二维码