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 性能基线对比流程
推荐按以下步骤执行对比:
- 采集迁移前基线:在迁移窗口前 24 小时内,选取业务低峰期(如凌晨 2:00~4:00)和高峰期(如 14:00~16:00)各采集 3 组数据。
- 迁移后静默观察:切换完成后,等待 10 分钟让连接池预热,再开始采集。
- 同时间段对比:选择与迁移前相同的时间段(如同样是下午 3 点)进行对比,避免业务流量差异导致误判。
- 记录偏差:将每个指标的偏差值记录到对比表中,超过阈值则触发告警。
4.4 缓存命中率变化分析图
下图展示了迁移前后缓存命中率与 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 小时,确保业务周期覆盖完整。