上一篇我们吃透了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主从复制信息主从角色、复制状态、延迟
cpuCPU使用信息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 memoryINFO clientsINFO stats

结语与下篇预告

本篇我们掌握了Redis INFO命令的用法和核心指标解读,零基础也能快速做性能监控、故障排查,搞定线上Redis运行状态管控。

发表回复