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

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

先把机制边界说清楚

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

整体路径

Redis 线上问题排查路径图

上面这张图先把主线铺开:从症状入口出发,逐层收敛到命令、key、内存和拓扑。读 Redis 这类系统,最重要的是别只停在命令接口,要继续追问它在内存里是什么形状、在主线程上走多远、失败时会留下什么状态。

底层机制

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

这些机制放在一起看,就能把「这个命令能不能用」改成「这个命令在当前数据规模下还便不便宜」。Redis 的很多坑,不是命令本身错了,而是数据规模和访问方式已经越过了它的舒适区。

取舍与边界

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

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

  • 先确认影响面:单 key、单节点、单业务、还是全实例。
  • 延迟类问题依次看客户端 RT、LATENCY DOCTORSLOWLOG、命令分布和 key 大小。
  • 内存类问题依次看 INFO memory、big key、淘汰、碎片和输出缓冲。
  • 复制和集群类问题看 offset、lag、MOVED/ASK、slot 倾斜和故障转移日志。

收束:一句判断

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


关于十三Tech

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

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

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

十三Tech公众号二维码