redis-cli info stats 中的 instantaneous_ops_per_sec 表示 Redis 当前每秒处理的命令数(瞬时值),突降、持续偏低或短时激增常预示连接中断、命令阻塞或客户端异常;因其反映真实秒级负载,比 Prometheus 的 rate() 计算值更精准捕捉抖动,需通过正确配置 redis_exporter 采集,并结合客户端数等指标联合诊断。

redis-cli info stats 能看到什么
直接运行 redis-cli info stats,关键字段是 instantaneous_ops_per_sec —— 它代表 Redis 当前每秒处理的命令数(非平均值,是最近一秒的瞬时采样)。这个值在高并发场景下波动剧烈,但突然归零、持续低于基线 30%、或短时冲高 3 倍以上,往往预示连接中断、命令阻塞或客户端异常。
为什么不能只看 average_ops_per_sec
Prometheus 默认抓取的 redis_commands_processed_total 是累计值,需用 rate() 计算速率。但 rate() 在 scrape 间隔不稳或数据断点时容易失真,尤其当 scrape_interval 设为 15s 时,rate(redis_commands_processed_total[1m]) 实际反映的是过去 1 分钟的平均速率,掩盖了秒级毛刺。真正要捕获“突发抖动”,必须依赖 exporter 暴露的 redis_instantaneous_ops_per_sec 指标(它由 redis_exporter 主动轮询 INFO STATS 得到,不是推算)。
设置 Prometheus 告警规则的实操要点
在 alert.rules.yml 中写这条规则时,注意三个易错点:
- 用
redis_instantaneous_ops_per_sec,别用rate(redis_commands_processed_total[1m]) - 告警窗口至少设为
2m:因为instantaneous_ops_per_sec是瞬时值,单点抖动太常见,avg_over_time(redis_instantaneous_ops_per_sec[2m])才能过滤噪声 - 阈值要分场景定:
- 日常平稳业务:低于过去 1 小时 P90 值的 40%,持续 2 分钟 → 可能服务已失联
- 活动峰值期:高于过去 1 小时 P95 值的 200%,持续 2 分钟 → 需查慢查询或 pipeline 泛滥
- 绝对阈值慎用:比如固定设 “>10000” 会误报,不同实例负载差异大
示例规则片段:
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
groups:
- name: redis-ops-alerts
rules:
- alert: RedisOpsSpikeOrDrop
expr: |
(avg_over_time(redis_instantaneous_ops_per_sec[2m]) < 0.4 * on(instance) group_left()
quantile_over_time(0.90, redis_instantaneous_ops_per_sec[1h]))
OR
(avg_over_time(redis_instantaneous_ops_per_sec[2m]) > 2.0 * on(instance) group_left()
quantile_over_time(0.95, redis_instantaneous_ops_per_sec[1h]))
for: 2m
labels:
severity: warning
annotations:
summary: "Redis {{ $labels.instance }} ops/sec abnormal"redis_exporter 启动时必须加的参数
很多团队漏掉这一步:默认启动的 redis_exporter 不采集 instantaneous_ops_per_sec。必须显式启用 --redis.collection-timeout 并确保 INFO STATS 被包含在采集项中。正确命令是:
docker run -d --name redis-exporter -p 9121:9121 \ oliver006/redis_exporter \ --redis.addr redis://localhost:6379 \ --redis.collection-timeout 5s
如果用 Helm 部署 redis-exporter,检查 values.yaml 中 extraArgs 是否含 --redis.collection-timeout;否则指标为空,告警永远不触发。
真实环境中,instantaneous_ops_per_sec 的毛刺本身不可怕,可怕的是它和 redis_connected_clients 或 redis_blocked_clients 同步异常——这种组合信号比单一阈值更有诊断价值。

















