INFO stats 是什么
INFO 的 stats 段汇总连接、命令、命中、过期淘汰与流量计数,用来回答「服务被用了多少、被拒了多少、缓存还有效吗、内存有没有开始丢数据」。除瞬时字段外,这些计数都是自实例启动以来的累计值,单点快照只能看规模,看趋势必须两次采样做差分。
基本信息
| 命令 | redis-cli INFO stats,或 INFO 后取 stats 段 |
|---|---|
| 字段性质 | 多为累计计数,另有少量瞬时值 |
| 趋势判读 | 间隔固定时间采两次,用差值除以间隔换算速率 |
| 配套段 | clients 看连接与阻塞,memory 看水位与淘汰,persistence 看后台任务 |
常用字段逐列读法
| 字段 | 含义 | 异常信号 |
|---|---|---|
| total_connections_received | 累计接受的连接数 | 短时间暴涨,说明客户端没有复用连接或存在反复重连 |
| total_commands_processed | 累计处理的命令数 | 与 ops 对照,可判断单连接承载是否合理 |
| instantaneous_ops_per_sec | 最近采样的瞬时命令速率 | 单点波动大,应结合历史曲线看水位 |
| rejected_connections | 因 maxclients 上限被拒的连接数 | 不为 0 就是连接上限或连接池配置问题,必须先处理 |
| expired_keys | 因过期被删除的键数 | 与写入量对照,可推断过期策略是否符合业务预期 |
| evicted_keys | 因内存不足被淘汰的键数 | 不为 0 说明已到内存上限并开始丢数据 |
| keyspace_hits / keyspace_misses | 读写命中与未命中计数 | 命中率骤降常见于缓存穿透、键前缀变更或上游写入突增 |
| total_net_input_bytes / total_net_output_bytes | 累计入出字节数 | 换算带宽,判断是否接近网卡上限 |
典型使用场景
- 容量复盘:换算 QPS、连接数与带宽,判断是否需要扩容或调连接池
- 缓存效果评估:观察命中率变化,验证缓存改造是否有效
- 故障预判:盯 rejected_connections 与 evicted_keys,提前发现上限类问题
- 发布前后对比:同一业务峰值时段对比关键计数,确认有无异常增量
- 排障取证:与其他段合看,确定是命令侧、连接侧还是内存侧的问题
常用命令
常用命令
redis-cli INFO stats | grep -E 'connections|commands|keyspace_hits|keyspace_misses'
redis-cli INFO stats | grep -E 'expired_keys|evicted_keys|rejected'
redis-cli --stat # 每秒滚动刷新关键计数,便于肉眼看趋势
redis-cli INFO stats > /tmp/s1 && sleep 60 && redis-cli INFO stats > /tmp/s2
# 两次采样做差分:差值除以 60 秒即得这分钟的平均速率命中率算法是 keyspace_hits / (keyspace_hits + keyspace_misses)。写命令不参与命中统计,读写比例变化会让命中率自然波动,评估前先对齐业务口径。
evicted_keys 持续增长意味着内存策略正在删数据;如果业务依赖这些键,先确认 maxmemory-policy 是否符合预期,allkeys-* 策略会淘汰任意键而不只是过期键。