INFO commandstats 是什么
INFO commandstats 按命令给出调用次数、累计耗时与平均每次调用耗时,较新版本还会给出被拒绝与执行失败的次数。它回答的是谁被调用、调用了多少次、平均花多久,配合调用量才能分清高频命令和慢命令这两类完全不同的治理对象。
基本信息
| 查看方式 | INFO commandstats |
|---|---|
| 主要字段 | calls、usec、usec_per_call,较新版本含 rejected_calls、failed_calls |
| 统计口径 | 自启动或上次重置以来的累计值 |
| 重置方式 | CONFIG RESETSTAT,会清空全部统计 |
| 输出规模 | 命令种类多时输出很长,建议过滤后再看 |
典型使用场景
- 命令画像:找出调用量最大的命令,理解业务的访问结构
- 优化排序:高频命令与高平均耗时命令分开治理,避免方向错位
- 变更验证:发布前后对比同一命令的调用量与耗时变化
- 容量规划:用调用量推算扩缩容与分片需求
- 异常发现:平时不出现的命令突然频繁调用,往往是脚本或人工操作
- 风险收口:平均耗时高的低频命令,常常是小众但危险的用法
采集与对比
采集与对比
redis-cli INFO commandstats # 全量命令统计
redis-cli INFO commandstats | grep -E 'cmdstat_get|cmdstat_set' # 只看关注命令
redis-cli INFO stats | grep -E 'total_commands_processed' # 实例总命令量,作为对照
redis-cli SLOWLOG GET 5 # 慢日志与命令统计互相印证
redis-cli INFO commandstats > before.txt # 变更前留基线快照
redis-cli CONFIG RESETSTAT # 重置统计,重新开窗口
redis-cli INFO commandstats > after.txt # 窗口结束后再取一次字段读法
| 字段 | 含义 | 怎么用 |
|---|---|---|
| calls | 命令被调用的次数 | 识别高频命令 |
| usec | 累计耗时(微秒) | 结合调用量看总成本 |
| usec_per_call | 平均每次调用耗时 | 排序找出单次代价高的命令 |
| rejected_calls | 被拒绝的调用数 | 持续增长说明受限,需要定位原因 |
| failed_calls | 执行失败的次数 | 异常路径的观测口 |
平均耗时会被长尾拉高、也会被高频摊薄:判断一条命令是否真的慢,要和慢日志、命令级百分位一起看。
CONFIG RESETSTAT 会清空全部统计,做变更前后对比之前先导出快照,否则基线数据会一起丢掉。