上一篇我们吃透了Redis事务机制,借助MULTI/EXEC实现批量命令原子执行,同时厘清了其不支持回滚的核心局限,避开了业务开发大坑。当Redis上线运行后,内存暴涨、连接超时、响应变慢等问题往往悄然而至,想要快速定位故障、掌握运行状态,不需要复杂监控平台,Redis原生INFO命令就能搞定绝大多数基础监控需求。
INFO是Redis自带的全能监控命令,无需额外插件、零成本上手,能实时查看内存、CPU、连接、持久化、集群等全维度指标。本篇从零入门Redis性能监控,聚焦INFO命令的用法、核心模块解读、关键指标分析,带你快速成为Redis状态排查能手。
核心定位:INFO是Redis内置的监控命令,用于获取服务器运行时的全量状态信息,分为多个功能模块,可按需查看指定模块或全量指标,是日常运维、故障排查的首选工具。
一、为什么要用INFO命令做监控?
Redis运行在内存中,状态变化快,线上故障往往来得突然,INFO命令作为原生工具,有着无可替代的优势:
- 零依赖、开箱即用:无需安装插件、部署监控平台,连接Redis客户端即可使用
- 信息全面、覆盖核心:涵盖内存、CPU、连接、持久化、主从、命令统计等全场景指标
- 实时性强:执行后立即返回当前运行状态,数据实时更新
- 上手简单:命令格式简洁,指标含义清晰,新手也能快速看懂
- 适配全场景:单机、集群、主从模式均支持,兼容性极强
无论是日常巡检、故障应急、性能调优,INFO命令都是Redis运维的第一入口。
二、INFO命令基础用法
1. 命令格式
INFO命令支持查看全量信息或指定模块信息,格式如下:
# 查看Redis全量状态信息
INFO
# 查看指定模块的信息(推荐,减少冗余输出)
INFO [模块名]
2. 常用模块划分
INFO将监控指标按功能分为多个模块,日常运维只需关注核心模块即可,无需查看全量信息:
| 模块名 | 核心作用 | 关注重点 |
|---|---|---|
server | 服务器基础信息 | Redis版本、运行模式、启动时间 |
clients | 客户端连接信息 | 已连接数、阻塞连接数、最大连接数 |
memory | 内存使用信息 | 内存占用、内存碎片率、内存峰值 |
persistence | 持久化状态 | RDB/AOF状态、最后备份时间 |
stats | 全局统计信息 | 命令执行数、命中率、网络流量 |
replication | 主从复制信息 | 主从角色、复制状态、延迟 |
cpu | CPU使用信息 | CPU使用率、系统/用户CPU耗时 |
commandstats | 命令统计信息 | 各命令执行次数、耗时 |
3. 命令实操演示
# 连接Redis客户端
redis-cli
# 查看全量信息(内容较多,不推荐)
127.0.0.1:6379> INFO
# 查看内存模块信息(高频使用)
127.0.0.1:6379> INFO memory
# 查看客户端连接信息
127.0.0.1:6379> INFO clients
# 查看统计与缓存命中率
127.0.0.1:6379> INFO stats
三、核心模块指标详解(重点必看)
挑选线上运维最常用、最关键的指标拆解,快速定位问题,无需死记硬背全部参数。
1. Server模块:服务器基础信息
执行INFO server 查看,快速确认Redis环境:
- redis_version:Redis版本号,排查兼容性问题
- redis_mode:运行模式(standalone单机/sentinel哨兵/cluster集群)
- uptime_in_seconds:服务运行时长(秒),判断是否重启过
- tcp_port:Redis监听端口,默认6379
2. Clients模块:客户端连接监控
执行 INFO clients 查看,排查连接溢出、阻塞问题:
- connected_clients:当前已连接客户端数量,过高说明并发连接大
- blocked_clients:阻塞连接数(如等待BRPOP命令),非0说明有命令阻塞
- maxclients:最大支持连接数,超过会拒绝新连接
异常场景:connected_clients 接近maxclients,说明连接泄露或并发过高,需及时排查。
3. Memory模块:内存状态(核心监控)
执行 INFO memory 查看,排查内存暴涨、溢出问题:
- used_memory:Redis实际使用内存(字节)
- used_memory_human:人性化显示内存占用(如2.5G)
- used_memory_peak:内存使用峰值,判断是否出现过内存暴涨
- mem_fragmentation_ratio:内存碎片率,正常1~1.5,大于2说明碎片严重
- maxmemory:最大内存限制(配置文件设置)
优化建议:内存碎片率过高可执行 MEMORY PURGE 清理;used_memory接近maxmemory需及时扩容或清理冷数据。
4. Stats模块:缓存命中率与全局统计
执行 INFO stats 查看,判断缓存效率、业务运行状态:
- keyspace_hits:缓存命中次数
- keyspace_misses:缓存未命中次数
- total_commands_processed:总命令执行数,判断业务吞吐量
- instantaneous_ops_per_sec:每秒执行命令数,监控瞬时压力
缓存命中率计算公式:
$$命中率 = \frac{keyspace\_hits}{keyspace\_hits + keyspace\_misses} \times 100\%$$
优质标准:缓存命中率≥95%为优秀;低于90%说明缓存策略不合理,需优化Key设计或过期时间。
5. Persistence模块:持久化状态
执行 INFO persistence 查看,排查RDB/AOF备份故障:
- rdb_bgsave_in_progress:是否正在执行RDB备份(1=是,0=否)
- rdb_last_save_time:最后一次RDB备份时间戳
- rdb_last_bgsave_status:最后一次RDB备份状态(ok=成功)
- aof_enabled:是否开启AOF持久化
6. CPU模块:CPU使用情况
- used_cpu_sys:Redis占用系统CPU耗时
- used_cpu_user:Redis占用用户CPU耗时
- CPU耗时过高,说明存在慢查询、大量复杂命令(如Keys、Hgetall)
四、常用监控排查指令组合
日常运维直接用以下组合,快速定位问题,无需全量查询:
# 1. 快速查看内存+连接+命中率(高频巡检)
redis-cli INFO memory | grep used_memory_human
redis-cli INFO clients | grep connected_clients
redis-cli INFO stats | grep keyspace_
# 2. 查看是否有阻塞连接
redis-cli INFO clients | grep blocked_clients
# 3. 查看持久化是否正常
redis-cli INFO persistence | grep rdb_last_bgsave_status
# 4. 实时监控每秒命令执行数(watch持续刷新)
watch -n 1 "redis-cli INFO stats | grep instantaneous_ops_per_sec"
五、常见故障与指标对应
- Redis响应变慢:instantaneous_ops_per_sec过高、mem_fragmentation_ratio过大、存在慢查询
- 连接失败:connected_clients达到maxclients,连接数溢出
- 缓存效率低:缓存命中率低于90%,Key设计不合理
- 内存暴涨:used_memory持续升高,无过期策略、大Key过多
- 数据丢失风险:rdb_last_bgsave_status失败,持久化异常
六、INFO命令监控最佳实践
- 按需查询:优先查指定模块,避免INFO全量输出冗余信息
- 定时巡检:每天查看内存、命中率、连接数三大核心指标
- 设置阈值告警:命中率低于90%、内存占用超80%、连接数超阈值及时排查
- 结合日志:指标异常时配合Redis日志,快速定位根因
- 进阶扩展:复杂场景可结合Redis Exporter+Prometheus+Grafana搭建可视化监控平台
INFO监控速记:内存看碎片、连接看数量、命中率看效率、持久化看状态;核心指标盯紧,线上故障不愁。 核心命令:INFO memory、INFO clients、INFO stats
结语与下篇预告
本篇我们掌握了Redis INFO命令的用法和核心指标解读,零基础也能快速做性能监控、故障排查,搞定线上Redis运行状态管控。