Redis 诊断从“哪一段延迟上升”开始:客户端排队、网络、Redis 命令执行、Fork/持久化、系统调度和下游回源都可能是原因。先保存时间线和基线,再处理慢命令与容量。
Table of contents
Open Table of contents
三组命令分别看什么
redis-cli -a lab-password INFO memory
redis-cli -a lab-password SLOWLOG GET 10
redis-cli -a lab-password LATENCY DOCTOR
SLOWLOG 记录命令在 Redis 执行阶段的耗时,不包含网络收发和客户端排队;它没有记录不代表端到端没有慢请求。Latency Monitor 采样服务端延迟事件。INFO 提供内存、复制、持久化、命中率和淘汰等实例状态。
生产执行 --bigkeys、--memkeys 或全空间扫描前,要评估扫描开销并在低峰限速。对可疑 Key 使用 MEMORY USAGE、TYPE、STRLEN、HLEN、SCARD、ZCARD 等有界命令;不要先 HGETALL 把整个 BigKey 拉回客户端。
建立容量公式
最低估算包括:
逻辑数据 = Key 数量 × 平均每 Key 字节
配置容量 ≈ 逻辑数据 × 副本系数 ÷ (1 - 余量比例)
平均字节要通过真实抽样获得,并包含 Key 和对象开销。还要额外考虑分配器碎片、客户端输出缓冲、复制积压、AOF 重写、RDB Fork 写时复制和迁槽峰值。
CapacityPlanner.java下载演示基础计算:100 万个平均 512 字节的 Key、两个副本、预留 30%,需要约 1.46GB 起步,而不是 512MB。
淘汰策略不是容量替代品
allkeys-lfu 可优先保留高频 Key,但淘汰已经表示工作集超过预算。会话、锁、幂等标记和缓存若混在同一实例,淘汰可能破坏正确性。按数据职责隔离实例或至少隔离明确的故障域。
告警同时覆盖内存余量、淘汰速率、P99、连接拒绝、复制延迟、持久化失败和事件循环 CPU。阈值要结合增长速度给出“还能撑多久”。
下一步
继续阅读07-12 Redis 生产变更与数据迁移,把扩容、升级、备份、回滚和权限收敛组成可执行运行手册。