《Redis INFO 命令输出详解》

《Redis INFO 命令输出详解》

info 是 Redis 最常用的监控命令,一条输出即可了解实例的运行状态、内存、持久化、复制等关键信息。本文按 section 逐字段解释其含义,为 Redis 排障与性能调优提供参考。

执行方式:

redis-cli info redis-cli info server # 只看某个 section redis-cli info memory

1 Server

server 段展示实例自身的基础信息:

  • redis_version:Redis 服务器版本。
  • redis_git_sha1:编译所用 Git SHA1。
  • redis_git_dirty:Git dirty flag。
  • redis_build_id:构建 ID。
  • redis_mode:运行模式,standalone(单机)或 cluster(集群)。
  • os:宿主操作系统。
  • arch_bits:架构(32/64 位)。
  • multiplexing_api:事件处理机制,Linux 通常为 epoll。
  • atomicvar_api:原子变量处理 API。
  • gcc_version:编译时使用的 GCC 版本。
  • process_id:服务器进程 PID。
  • run_id:服务器随机标识符,用于 Sentinel 与集群。
  • tcp_port:TCP/IP 监听端口。
  • uptime_in_seconds:启动以来的秒数。
  • uptime_in_days:启动以来的天数。
  • hz:serverCron 每秒执行次数(默认 10,用于关闭超时客户端、清理过期 key 等)。
  • lru_clock:自增时钟,用于 LRU 管理,每 100ms(1000ms/hz)更新一次。
  • executable:可执行文件路径。
  • config_file:配置文件路径。

2 Clients

客户端连接情况:

  • connected_clients:已连接客户端数量(不含从属服务器)。
  • client_longest_output_list:当前连接中客户端最长的输出列表。
  • client_biggest_input_buf:当前连接中最大的输入缓冲区。
  • blocked_clients:正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端数量。

3 Memory

内存使用是排查 OOM 与性能问题的重点:

  • used_memory:Redis 分配器分配的内存总量(字节)。
  • used_memory_human:人类可读的内存总量。
  • used_memory_rss:操作系统视角的内存常驻集大小(与 top/ps 一致)。
  • used_memory_rss_human:人类可读的常驻集大小。
  • used_memory_peak:内存消耗峰值(字节)。
  • used_memory_peak_human:人类可读的内存峰值。
  • used_memory_peak_perc:(used_memory / used_memory_peak) * 100%。
  • used_memory_overhead:维护数据集的内部开销,含客户端输出缓冲、查询缓冲、AOF 重写缓冲与主从复制 backlog。
  • used_memory_startup:启动时消耗的内存。
  • used_memory_dataset:used_memory - used_memory_overhead。
  • used_memory_dataset_perc:100% * used_memory_dataset / (used_memory - used_memory_startup)。
  • total_system_memory / total_system_memory_human:整机物理内存。
  • used_memory_lua / used_memory_lua_human:Lua 脚本缓存占用的内存。
  • maxmemory:实例最大内存配置。
  • maxmemory_policy:达到 maxmemory 时的淘汰策略。
  • mem_fragmentation_ratio:used_memory_rss / used_memory。明显大于 1 表示碎片偏高。
  • mem_allocator:内存分配器(如 jemalloc)。
  • active_defrag_running:0 无碎片整理任务,1 有任务正在运行。
  • lazyfree_pending_objects:积压的惰性删除对象数量(0 表示无)。

4 Persistence

持久化状态:

  • loading:服务器是否正在载入持久化文件。
  • rdb_changes_since_last_save:最近一次成功生成 RDB 之后未持久化的写命令数。
  • rdb_bgsave_in_progress:是否正在生成 RDB 文件。
  • rdb_last_save_time:最近一次成功创建 RDB 的时间戳。
  • rdb_last_bgsave_status:最近一次 RDB 持久化状态(ok/err)。
  • rdb_last_bgsave_time_sec:最近一次 RDB 生成耗时(秒)。
  • rdb_current_bgsave_time_sec:正在进行的 RDB 已耗时(秒)。
  • rdb_last_cow_size:RDB 过程中父进程与子进程相比执行的修改量。
  • aof_enabled:是否开启 AOF。
  • aof_rewrite_in_progress:AOF rewrite 是否进行中。
  • aof_rewrite_scheduled:是否有待执行的 rewrite(rewrite 子进程忙时,客户端 bgrewriteaof 会被排程)。
  • aof_last_rewrite_time_sec:最近一次 AOF rewrite 耗时(秒)。
  • aof_current_rewrite_time_sec:当前 rewrite 已耗时(秒)。
  • aof_last_bgrewrite_status:最近一次 bgrewriteaof 状态。
  • aof_last_write_status:最近一次 AOF 写入状态。
  • aof_last_cow_size:AOF 过程中父子进程的修改量。

5 Stats

运行统计,常用于观察 QPS 与网络:

  • total_connections_received:累计新建连接数。该值过高说明短连接严重或连接池使用不当。
  • total_commands_processed:处理的命令总数。
  • instantaneous_ops_per_sec:当前 QPS(每秒执行命令数)。
  • total_net_input_bytes / total_net_output_bytes:累计网络入/出流量字节数。
  • instantaneous_input_kbps / instantaneous_output_kbps:瞬时网络入/出速率(KB/s)。
  • rejected_connections:因达到 maxclients 被拒绝的连接数。
  • sync_full:主从全量同步成功次数。
  • sync_partial_ok:主从部分同步成功次数。
  • sync_partial_err:主从部分同步失败次数。
  • expired_keys:运行以来过期的 key 数量。
  • expired_stale_perc:过期比率。
  • expired_time_cap_reached_count:过期主循环耗时上限命中次数。
  • evicted_keys:运行以来因超过 maxmemory 被剔除的 key 数量。
  • keyspace_hits / keyspace_misses:命中/未命中次数。
  • pubsub_channels / pubsub_patterns:正在使用的频道数与模式频道数。
  • latest_fork_usec:最近一次 fork 阻塞进程耗时(微秒)。
  • migrate_cached_sockets:是否已缓存到目标地址的连接。
  • slave_expires_tracked_keys:从实例到期 key 数量。
  • active_defrag_hits / active_defrag_misses:主动碎片整理命中/未命中次数。
  • active_defrag_key_hits / active_defrag_key_misses:主动碎片整理 key 命中/未命中次数。

6 Replication

主从同步关键指标:

  • role:实例角色,master 或 slave。
  • connected_slaves:连接的 slave 实例个数。
  • master_replid:主实例复制 ID。
  • master_replid2:第二个复制 ID。
  • master_repl_offset:主从同步偏移量。
  • second_repl_offset:第二复制流偏移量。
  • repl_backlog_active:复制积压缓冲区是否开启。
  • repl_backlog_size:复制积压缓冲区大小。
  • repl_backlog_first_byte_offset:积压缓冲区起始偏移量。
  • repl_backlog_histlen:= master_repl_offset - repl_backlog_first_byte_offset,不会超过 repl_backlog_size。

7 CPU

  • used_cpu_sys:主进程核心态累计 CPU 时间。
  • used_cpu_user:主进程用户态累计 CPU 时间。
  • used_cpu_sys_children:后台子进程核心态累计 CPU 时间。
  • used_cpu_user_children:后台子进程用户态累计 CPU 时间。

8 Commandstats

命令使用统计快照,逐命令统计(cmdstat_xxx),如 cmdstat_set、cmdstat_ping、cmdstat_del、cmdstat_psync、cmdstat_keys、cmdstat_hmset、cmdstat_hgetall、cmdstat_command、cmdstat_info、cmdstat_replconf、cmdstat_client 等,可据此判断热点命令与慢命令。

9 Cluster

  • cluster_enabled:实例是否启用集群模式。

10 Keyspace

  • db0:db0 的 key 总数、带过期时间的 key 数与平均存活时间,如 db0:keys=100,expires=20,avg_ttl=1000。

11 结语

  • 日常监控核心看:instantaneous_ops_per_sec(QPS)、used_memory_human(内存)、mem_fragmentation_ratio(碎片)、master_repl_offset(复制滞后)、keyspace_hits/keyspace_misses(命中率)。
  • 参考文章:redis info 输出详解。
阅读 — · 全站 —
🎸 我的歌单 0 首