4、缓存命中率与性能基线对比

迁移完成后,缓存命中率与性能基线是验证缓存层是否正常工作的核心指标。通过 INFO stats 命令获取 keyspace_hits 与 keyspace_misses,计算命中率,并与迁移前的 QPS、延迟基线进行对比,可以快速发现缓存穿透、连接异常或配置偏差等问题。

4.1 核心指标采集命令

使用 Redis CLI 执行以下命令获取原始数据:

redis-cli -h <target_host> -p <target_port> INFO stats | grep -E "keyspace_(hits|misses)|instantaneous_ops_per_sec|instantaneous_input_kbps|instantaneous_output_kbps|latest_fork_usec"

关键字段说明:

字段名 含义 单位
keyspace_hits 从启动到当前时刻的缓存命中总次数 次
keyspace_misses 从启动到当前时刻的缓存未命中总次数 次
instantaneous_ops_per_sec 当前实时 QPS 次/秒
instantaneous_input_kbps 当前实时网络入流量 KB/s
instantaneous_output_kbps 当前实时网络出流量 KB/s

4.2 命中率计算与基线对比

命中率计算公式:

命中率 = keyspace_hits / (keyspace_hits + keyspace_misses) × 100%

建议在迁移前后各采集 3 次(间隔 5 分钟),取平均值进行对比:

对比项 迁移前基线 迁移后实测 偏差阈值 判定
缓存命中率 ≥ 95% ≥ 93% 下降 ≤ 2% 正常
QPS(峰值) 5000 ops/s 4800 ~ 5200 ops/s 波动 ≤ 5% 正常
平均延迟(P99) ≤ 5 ms ≤ 6 ms 增加 ≤ 1 ms 正常
网络入流量 120 KB/s 115 ~ 125 KB/s 波动 ≤ 10% 正常
⚠️ 异常判定规则:
  • 命中率下降超过 5%:立即检查 key 过期策略、数据预热是否完成、是否存在缓存穿透。
  • QPS 下降超过 10%:检查客户端连接池配置、网络链路、Redis 最大连接数限制。
  • P99 延迟增加超过 2 ms:检查慢查询日志、内存碎片率、持久化对主线程的阻塞。

4.3 性能基线对比流程

推荐按以下步骤执行对比:

  1. 采集迁移前基线:在迁移窗口前 24 小时内,选取业务低峰期(如凌晨 2:00~4:00)和高峰期(如 14:00~16:00)各采集 3 组数据。
  2. 迁移后静默观察:切换完成后,等待 10 分钟让连接池预热,再开始采集。
  3. 同时间段对比:选择与迁移前相同的时间段(如同样是下午 3 点)进行对比,避免业务流量差异导致误判。
  4. 记录偏差:将每个指标的偏差值记录到对比表中,超过阈值则触发告警。

4.4 缓存命中率变化分析图

下图展示了迁移前后缓存命中率与 QPS 的典型变化趋势,帮助运维人员快速定位问题区间:

迁移前后缓存命中率与 QPS 对比趋势 命中率 (%) QPS (ops/s) T-2h T-1h 迁移切换 T+1h T+2h 命中率 QPS 迁移后命中率短暂下降(缓存冷启动),QPS 同步上升(穿透请求增多),需关注预热进度。

4.5 延迟基线对比方法

延迟对比建议使用 redis-cli --latency 工具,该工具会持续发送 PING 命令并统计延迟分布:

# 迁移前采集基线
redis-cli -h <old_host> -p <old_port> --latency -i 1 -c 60

# 迁移后采集对比
redis-cli -h <new_host> -p <new_port> --latency -i 1 -c 60

输出示例:

min: 0, max: 3, avg: 0.82 (60 samples)

重点关注 avg 和 max 两个值。如果迁移后 avg 增加超过 1 ms 或 max 超过 10 ms,需要排查网络延迟、实例负载或持久化配置。

4.6 常见问题与处理建议

现象 可能原因 处理措施
命中率下降 > 5% 缓存未预热、key 过期策略不一致 执行 SCAN 扫描热点 key,手动预热或调整过期时间
QPS 下降 > 10% 客户端连接池耗尽、网络带宽受限 检查 CLIENT LIST 连接数,调整 maxclients 和连接池大小
P99 延迟飙升 慢查询、fork 阻塞、内存碎片 开启 SLOWLOG 分析,检查 INFO memory 的 mem_fragmentation_ratio
网络流量异常 大 key 传输、复制积压缓冲区过大 使用 MEMORY USAGE 定位大 key,调整 repl-backlog-size
💡 最佳实践: 建议将迁移后的缓存命中率、QPS、延迟数据接入监控系统(如 Prometheus + Grafana),设置动态告警阈值。迁移后持续观察至少 72 小时,确保业务周期覆盖完整。