命令简介
INFO 命令用于返回 Redis 服务器的各种信息和统计值,这些信息对于调试、监控和了解服务器的运行状况至关重要。

基本语法:
INFO [section]
section(可选): 指定要获取的信息类别,如果不提供section,命令将返回所有信息,这可能会产生大量的输出,在生产环境中通常不推荐这样做。
主要信息类别 (section)
INFO 命令支持多种 section,每个 section 提供特定方面的信息,以下是常用的一些 section:
| Section | 描述 |
|---|---|
server |
服务器 的常规信息,如 Redis 版本、运行时间、进程 ID 等。 |
clients |
客户端 连接信息,如已连接客户端的数量、阻塞的客户端数量等。 |
memory |
内存 使用情况,如已用内存、峰值内存、内存碎片率等。(极其重要) |
persistence |
持久化 相关信息,如 RDB 最后保存时间、AOF 当前重写状态等。 |
stats |
一般统计 信息,如总连接数、命令执行次数、键过期数等。 |
replication |
复制 相关信息,如主从复制状态、主库 ID、从库 ID 等。 |
cpu |
CPU 使用统计,如累计使用的 CPU 时间、系统 CPU 时间等。 |
commandstats |
命令统计,显示每个命令执行的次数和消耗的 CPU 时间。 |
cluster |
集群 状态信息,仅在集群模式下有效。 |
keyspace |
数据库键空间 信息,显示每个数据库的键数量和过期键数量。 |
常用 section 详解及示例
1 INFO server - 服务器信息
这个部分提供了 Redis 实例的基本元数据。
0.0.1:6379> INFO server # Server redis_version:7.0.11 # Redis 版本 redis_git_sha1:00000000 # Git SHA1 redis_git_dirty:0 # Git 是否有未提交的更改 redis_build_id:0e3a8c5e4a3e8c5e # 构建ID redis_mode:standalone # 运行模式: standalone, cluster, sentinel os:Linux 5.4.0-150-generic x86_64 # 操作系统 arch_bits:64 # 架构位数 process_id:12345 # Redis 进程ID run_id:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 实例的唯一ID tcp_port:6379 # 监听端口 uptime_in_seconds:123456 # 运行总秒数 uptime_in_days:1 # 运行总天数 hz:10 # 内部定时器频率 lru_clock:12345678 # LRU 时钟 executable:/usr/bin/redis-server config_file:/etc/redis/redis.conf
关键指标:

redis_version: 确认你运行的版本。uptime_in_days: 服务器运行了多久,用于稳定性评估。process_id: 用于进程管理,如kill或gdb调试。
2 INFO memory - 内存信息
这是最常用的部分之一,对于排查内存问题和性能瓶颈至关重要。
0.0.1:6379> INFO memory # Memory used_memory:123456789 # Redis 使用的总内存字节数 used_memory_human:117.7M # 人类可读的格式 used_memory_rss:150000000 # 操作系统分配给 Redis 的物理内存 used_memory_peak:200000000 # Redis 历史峰值内存 used_memory_peak_human:190.7M used_memory_lua:32768 # Lua 脚本引擎占用的内存 maxmemory:0 # 设置的最大内存限制 (0表示不限制) maxmemory_policy:noeviction # 内存达到上限后的策略 mem_fragmentation_ratio:1.21 # **内存碎片率 = used_memory_rss / used_memory** mem_allocator:jemalloc-5.1.0 # 使用的内存分配器 ...
关键指标解读:
used_memory: Redis 数据本身占用的内存。used_memory_rss: Redis 实际占用的物理内存。mem_fragmentation_ratio(内存碎片率):- 理想值: 接近 1.0,表示
used_memory和used_memory_rss几乎相等,内存利用率高。 - > 1.5 (偏高): 可能表示存在内存碎片,这通常发生在 Redis 有大量键被删除,但操作系统没有及时回收内存的情况下,对于 64 位系统,轻微的碎片是正常的。
- < 1.0 (偏低): 这是一种非常危险的情况,表示 Redis 的内存超出了物理内存,使用了交换分区,这会导致 Redis 性能急剧下降,应立即排查。
- 理想值: 接近 1.0,表示
maxmemory和maxmemory_policy: 如果设置了最大内存,需要关注内存淘汰策略是否生效。
3 INFO stats - 统计信息
提供全局的运行统计。
0.0.1:6379> INFO stats # Stats total_connections_received:12345 # 总共接受的连接数 total_commands_processed:98765 # 总共执行的命令数 instantaneous_ops_per_sec:150 # **每秒执行命令数** total_net_input_bytes:123456789 # 总网络输入字节数 total_net_output_bytes:987654321 # 总网络输出字节数 ...
关键指标:

instantaneous_ops_per_sec: 当前每秒操作的速率,是衡量 Redis 负载的核心指标。
4 INFO replication - 复制信息
在主从架构中,这部分信息用于监控复制状态。
# 主库视角 127.0.0.1:6379> INFO replication # Replication role:master connected_slaves:2 slave0:ip=192.168.1.100,port=6380,state=online,offset=123456,lag=1 slave1:ip=192.168.1.101,port=6380,state=online,offset=123400,lag=0 master_replid:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx master_replid2:0000000000000000000000000000000000000000 master_repl_offset:123456 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:123456 ... # 从库视角 127.0.0.1:6380> INFO replication # Replication role:slave master_host:192.168.1.99 master_port:6379 master_link_status:up master_last_io_seconds_ago:0 master_sync_in_progress:0 slave_repl_offset:123456 ...
关键指标:
role: 区分主库 (master) 和从库 (slave)。connected_slaves: 主库连接的从库数量。state: 从库的状态,如online(在线)、connecting(连接中)。lag: 从库与主库的复制延迟(秒数),延迟过高需要关注。
5 INFO keyspace - 键空间信息
显示每个数据库中的键数量和带有过期时间的键数量。
0.0.1:6379> INFO keyspace # Keyspace db0:keys=1500,expires=100,avg_ttl=12345678 db1:keys=50,expires=0
关键指标:
dbX:keys=Y: 数据库X中有Y个键。dbX:expires=Z: 数据库X中有Z个键设置了过期时间。avg_ttl: 平均 TTL (Time To Live),对于设置了过期时间的键。
高级用法
1 获取多个 section
你可以使用空格分隔多个 section 来一次性获取不同类别的信息。
INFO server memory stats
2 动态更新 commandstats
默认情况下,INFO commandstats 提供的是从服务器启动以来的累计数据,你可以通过 CONFIG 命令重置这些统计数据,以便监控特定时间段内的命令使用情况。
# 重置命令统计 CONFIG RESETSTAT # 现在再执行 INFO commandstats,数据将从0开始计算 INFO commandstats
3 编程中获取 INFO
在代码中(如 Python),你通常会使用 Redis 客户端库来获取这些信息。
Python (使用 redis-py) 示例:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
# 获取所有信息 (返回字典)
info_all = r.info()
print(f"Redis Version: {info_all['redis_version']}")
print(f"Used Memory: {info_all['used_memory_human']}")
# 获取特定 section 的信息 (返回字典)
info_memory = r.info('memory')
print(f"Memory Fragmentation Ratio: {info_memory['mem_fragmentation_ratio']}")
# 重置命令统计
r.config_resetstat()
INFO 命令是 Redis 运维和开发的“瑞士军刀”,熟练掌握它,能够帮助你:
- 快速诊断问题: 比如通过
INFO memory查看内存是否耗尽,通过INFO replication检查主从同步是否正常。 - 监控系统性能: 通过
INFO stats的instantaneous_ops_per_sec监控 QPS,通过INFO memory监控内存使用情况。 - 规划容量: 通过
INFO memory的used_memory_peak了解历史峰值,为扩容提供依据。
在实际使用中,推荐总是指定具体的 section,以获得清晰、聚焦的输出,避免不必要的数据传输和解析开销。
