INFO

返回有关服务器的信息和统计数据。

语法

INFO [section [section ...]]

引入版本:1.0.0

复杂度摘要:O(1)

INFO 命令以易于计算机解析且易于人类阅读的格式返回有关服务器的信息和统计信息。

可选参数可用于选择特定的信息部分:

  • server:Redis服务器的一般信息
  • clients:客户端连接部分
  • memory:内存消耗相关信息
  • persistence:RDB和AOF相关信息
  • threads:I/O线程信息
  • stats:一般统计
  • replication:主/从复制信息
  • cpu:CPU消耗统计
  • commandstats:Redis命令统计
  • latencystats:Redis命令延迟百分位数分布统计
  • sentinel:Redis Sentinel部分(仅适用于Sentinel实例)
  • cluster:Redis集群部分
  • modules:模块部分
  • keyspace:数据库相关统计信息
  • keysizes:每种数据类型的键大小分布统计
  • errorstats:Redis错误统计
  • hotkeys:热键跟踪信息

还可以取以下值:

  • all:返回所有部分(不包括模块生成的部分)
  • default:仅返回默认的部分集
  • everything:包括all和modules

当未提供参数时,假定为 default 选项。

> INFO

可选参数

section [section ...]

要包含在输出中的一个或多个部分,例如 server、clients 或 memory。还接受 all、everything 和 default。

详细说明

Depending on the version of Redis some of the fields have been added or removed.因此,健壮的客户端应用程序应该通过跳过未知属性并妥善处理缺失字段来解析此命令的结果。

这里是Redis >= 2.4 的字段描述。

服务器 部分中所有字段的含义如下:

  • redis_version:Redis服务器的版本
  • redis_git_sha1:Git SHA1
  • redis_git_dirty:Git 脏标志
  • redis_build_id:构建 ID
  • redis_mode:服务器的模式(“独立”、“哨兵”或“集群”)
  • os:托管Redis服务器的操作系统
  • arch_bits:架构(32 或 64 位)
  • multiplexing_api:Redis使用的事件循环机制
  • atomicvar_api:Redis使用的Atomicvar API
  • gcc_version:用于编译Redis服务器的GCC编译器版本
  • process_id:服务器进程的PID
  • process_supervised:受监督系统(“upstart”、“systemd”、“unknown”或“no”)
  • run_id:标识Redis服务器的随机值(供Sentinel和Cluster使用)
  • tcp_port:TCP/IP监听端口
  • server_time_usec:基于纪元的系统时间,精度为微秒
  • uptime_in_seconds:Redis服务器启动以来的秒数
  • uptime_in_days:以天数表示的相同值
  • hz:服务器当前的频率设置
  • configured_hz:服务器配置的频率设置
  • lru_clock:时钟每分钟递增,用于LRU管理
  • executable:服务器可执行文件的路径
  • config_file:配置文件的路径
  • io_threads_active:指示 I/O 线程是否活动的标志
  • shutdown_in_milliseconds:副本在完成关闭序列之前赶上复制的剩余最大时间。该字段仅在关闭期间出现。

客户 部分中所有字段的含义如下:

  • connected_clients:客户端连接数(不包括副本连接)
  • cluster_connections:集群总线使用的套接字数量的近似值
  • maxclients:maxclients 配置指令的值。这是 connected_clients、connected_slaves 和 cluster_connections 之和的上限。
  • client_recent_max_input_buffer:当前客户端连接中最大的输入缓冲区
  • client_recent_max_output_buffer:当前客户端连接中最大的输出缓冲区
  • blocked_clients:等待阻塞调用的客户端数量(BLPOP、BRPOP、BRPOPLPUSH、BLMOVE、BZPOPMIN、BZPOPMAX)
  • tracking_clients:被跟踪的客户端数量(CLIENT TRACKING)
  • pubsub_clients:pubsub 模式下的客户端数量(SUBSCRIBE、PSUBSCRIBE、SSUBSCRIBE)。 Redis 7.4 中添加
  • watching_clients:处于观看模式的客户端数量(WATCH)。 Redis 7.4 中添加
  • clients_in_timeout_table:客户端超时表中的客户端数量
  • total_watched_keys:监视的键数。 Redis 7.4 中添加。
  • total_blocking_keys:阻塞键的数量。 Redis 7.2 中添加。
  • total_blocking_keys_on_nokey:删除键时一个或多个客户端希望解除阻止的阻止键的数量。 Redis 7.2 中添加。

记忆 部分中所有字段的含义如下:

  • used_memory:Redis 使用其分配器(标准 库、jemalloc 或替代分配器,例如 tcmalloc)分配的字节总数
  • used_memory_human:先前值的人类可读表示
  • used_memory_rss:操作系统看到的 Redis 分配的字节数(也称为驻留集大小)。这是 top(1) 和 ps(1) 等工具报告的数字
  • used_memory_rss_human:先前值的人类可读表示
  • used_memory_peak:Redis消耗的峰值内存(以字节为单位)
  • used_memory_peak_human:先前值的人类可读表示
  • used_memory_peak_time:记录峰值内存的时间
  • used_memory_peak_perc:used_memory占used_memory_peak的百分比
  • used_memory_overhead:服务器分配用于管理其内部数据结构的所有开销的总和(以字节为单位)
  • used_memory_startup:Redis启动时消耗的初始内存量(以字节为单位)
  • used_memory_dataset:数据集的大小(以字节为单位)(从 used_memory 中减去 used_memory_overhead)
  • used_memory_dataset_perc:used_memory_dataset占净内存使用量的百分比(used_memory减去used_memory_startup)
  • total_system_memory:Redis主机拥有的内存总量
  • total_system_memory_human:先前值的人类可读表示
  • used_memory_lua:Lua 引擎用于 EVAL 脚本的字节数。在 Redis 7.0 中已弃用,重命名为 used_memory_vm_eval
  • used_memory_vm_eval:EVAL 框架的脚本 VM 引擎使用的字节数(不是used_memory 的一部分)。 Redis 7.0 中添加
  • used_memory_lua_human:先前值的人类可读表示。 Redis 7.0 中已弃用
  • used_memory_scripts_eval:EVAL 脚本开销的字节数(used_memory 的一部分)。 Redis 7.0 中添加
  • number_of_cached_scripts:服务器缓存的EVAL脚本数量。 Redis 7.0 中添加
  • number_of_functions:函数数量。 Redis 7.0 中添加
  • number_of_libraries:库的数量。 Redis 7.0 中添加
  • used_memory_vm_functions:Functions 框架的脚本 VM 引擎使用的字节数(不是used_memory 的一部分)。 Redis 7.0 中添加
  • used_memory_vm_total:used_memory_vm_eval + used_memory_vm_functions(不是used_memory的一部分)。 Redis 7.0 中添加
  • used_memory_vm_total_human:先前值的人类可读表示。
  • used_memory_functions:函数脚本开销的字节数(used_memory 的一部分)。 Redis 7.0 中添加
  • used_memory_scripts:used_memory_scripts_eval + used_memory_functions(used_memory 的一部分)。 Redis 7.0 中添加
  • used_memory_scripts_human:先前值的人类可读表示
  • used_memory_hash_templates:所有紧凑哈希模板(共享模板注册表)使用的总内存(以字节为单位)。 Redis 8.10 中添加。
  • maxmemory:maxmemory 配置指令的值
  • maxmemory_human:先前值的人类可读表示
  • maxmemory_policy:maxmemory-policy 配置指令的值
  • mem_fragmentation_ratio:used_memory_rss 和 used_memory 之间的比率。请注意,这不仅包括碎片,还包括其他进程开销(请参阅 allocator_* 指标),以及代码、共享库、堆栈等开销。
  • mem_fragmentation_bytes:used_memory_rss 和 used_memory 之间的差值。请注意,当总碎片字节数较低(几兆字节)时,较高的比率(例如 1.5 及以上)并不表示存在问题。
  • allocator_frag_ratio::allocator_active 和 allocator_allocated 之间的比率。这是真正的(外部)碎片指标(不是 mem_fragmentation_ratio)。
  • allocator_frag_bytes allocator_active 和 allocator_allocated 之间的增量。请参阅有关 mem_fragmentation_bytes 的注释。
  • allocator_rss_ratio:allocator_resident 和 allocator_active 之间的比率。这通常表明分配器可以而且可能很快就会将页面释放回操作系统。
  • allocator_rss_bytes:allocator_resident 和 allocator_active 之间的差值
  • rss_overhead_ratio:used_memory_rss(进程RSS)和allocator_resident 之间的比率。这包括与分配器或堆无关的 RSS 开销。
  • rss_overhead_bytes:used_memory_rss(进程 RSS)和 allocator_resident 之间的差值
  • allocator_allocated:从分配器分配的总字节数,包括内部碎片。通常与 used_memory 相同。
  • allocator_active:分配器活动​​页中的总字节数,其中包括外部碎片。
  • allocator_resident:分配器中驻留的总字节数 (RSS),这包括可以释放到操作系统的页面(通过 MEMORY PURGE,或只是等待)。
  • allocator_muzzy:分配器中“模糊”内存 (RSS) 的总字节数。模糊内存是已被释放但尚未完全返回给操作系统的内存。它可以在需要时立即重用,或者在系统压力增加时由操作系统回收。
  • mem_not_counted_for_evict:已使用的内存不计入键驱逐。这基本上是瞬态副本和 AOF 缓冲区。
  • mem_clients_slaves:副本客户端使用的内存 - 从 Redis 7.0 开始,副本缓冲区与复制积压共享内存,因此当副本不触发内存使用量增加时,该字段可以显示 0。
  • mem_clients_normal:普通客户端使用的内存
  • mem_cluster_links:当启用集群模式时,集群总线上与对等点的链接所使用的内存。
  • mem_cluster_slot_migration_output_buffer:迁移客户端输出缓冲区的内存使用情况。 Redis 在迁移过程中将传入的更改写入此缓冲区。
  • mem_cluster_slot_migration_input_buffer:导入节点上累计复制流缓冲区的内存使用情况。
  • mem_cluster_slot_migration_input_buffer_peak:导入端累积的峰值 repl 缓冲区大小。
  • mem_aof_buffer:用于 AOF 和 AOF 重写缓冲区的瞬态内存
  • mem_replication_backlog:复制积压使用的内存
  • mem_total_replication_buffers:复制缓冲区消耗的总内存 - Redis 7.0 中添加。
  • mem_allocator:内存分配器,在编译时选择。
  • mem_overhead_db_hashtable_rehashing:当前正在重新哈希的数据库字典的临时内存开销 - 在 7.4 中添加。
  • active_defrag_running:当 activedefrag 使能时,这表明碎片整理当前是否处于活动状态,以及它打算使用的 CPU 百分比。
  • lazyfree_pending_objects:等待释放的对象数量(通过 ASYNC 选项调用 UNLINK 或 FLUSHDB 和 FLUSHALL 的结果)
  • lazyfreed_objects:已延迟释放的对象数量。

理想情况下,used_memory_rss 值应仅略高于 used_memory。当使用 rss >> 时,较大的差异可能意味着存在(外部)内存碎片,这可以通过检查 allocator_frag_ratio、allocator_frag_bytes 来评估。当使用 >> rss 时,这意味着部分 Redis 内存已被操作系统交换:预计会出现一些明显的延迟。

由于 Redis 无法控制其分配如何映射到内存页面,因此高 used_memory_rss 通常是内存使用量激增的结果。

当Redis释放内存时,内存会返还给分配器,分配器可能会也可能不会将内存返还给系统。 used_memory 值与操作系统报告的内存消耗之间可能存在差异。可能是由于Redis已经使用并释放了内存,但没有返还给系统。 used_memory_peak 值通常可用于检查这一点。

有关服务器内存的其他内省信息可以通过参考 MEMORY STATS 命令和 MEMORY DOCTOR 来获取。

坚持 部分中所有字段的含义如下:

  • loading:指示转储文件的加载是否正在进行的标志
  • async_loading:当前在提供旧数据时异步加载复制数据集。这意味着 repl-diskless-load 已启用并设置为 swapdb。 Redis 7.0 中添加。
  • current_cow_peak:子分支运行时写时复制内存的峰值大小(以字节为单位)
  • current_cow_size:子分支运行时写时复制内存的大小(以字节为单位)
  • current_cow_size_age:current_cow_size 值的寿命(以秒为单位)。
  • current_fork_perc:当前fork进程的进度百分比。对于 AOF 和 RDB 分叉,它是 current_save_keys_processed 占 current_save_keys_total 的百分比。
  • current_save_keys_processed:当前保存操作处理的key数量
  • current_save_keys_total:当前保存操作开始时的键数
  • rdb_changes_since_last_save:自上次转储以来的更改数量
  • rdb_bgsave_in_progress:指示 RDB 保存正在进行的标志
  • rdb_last_save_time:上次成功的 RDB 保存的基于纪元的时间戳
  • rdb_last_bgsave_status:上次RDB保存操作的状态
  • rdb_last_bgsave_time_sec:上次RDB保存操作的持续时间(以秒为单位)
  • rdb_current_bgsave_time_sec:正在进行的 RDB 保存操作的持续时间(如果有)
  • rdb_last_cow_size:上次 RDB 保存操作期间写时复制内存的大小(以字节为单位)
  • rdb_last_load_keys_expired:上次 RDB 加载期间删除的易失性键的数量。 Redis 7.0 中添加。
  • rdb_last_load_keys_loaded:上次 RDB 加载期间加载的键数。 Redis 7.0 中添加。
  • aof_enabled:指示 AOF 日志记录已激活的标志
  • aof_rewrite_in_progress:指示 AOF 重写操作正在进行的标志
  • aof_rewrite_scheduled:指示一旦正在进行的 RDB 保存完成就将安排 AOF 重写操作的标志。
  • aof_last_rewrite_time_sec:最后一次AOF重写操作的持续时间(以秒为单位)
  • aof_current_rewrite_time_sec:正在进行的 AOF 重写操作的持续时间(如果有)
  • aof_last_bgrewrite_status:上次AOF重写操作的状态
  • aof_last_write_status:最后一次对 AOF 进行写操作的状态
  • aof_last_cow_size:上次 AOF 重写操作期间写时复制内存的大小(以字节为单位)
  • module_fork_in_progress:指示模块分叉正在进行的标志
  • module_fork_last_cow_size:上次模块 fork 操作期间写时复制内存的大小(以字节为单位)
  • aof_rewrites:自启动以来执行的AOF重写次数
  • rdb_saves:自启动以来执行的RDB快照数量

rdb_changes_since_last_save 指自上次调用 SAVE 或 BGSAVE 以来在数据集中产生某种更改的操作数。

如果激活 AOF,将添加这些附加字段:

  • aof_current_size:AOF当前文件大小
  • aof_base_size:最近一次启动或重写时的AOF文件大小
  • aof_pending_rewrite:指示一旦正在进行的 RDB 保存完成就将安排 AOF 重写操作的标志。
  • aof_buffer_length:AOF缓冲区的大小
  • aof_rewrite_buffer_length:AOF 重写缓冲区的大小。请注意,该字段在 Redis 7.0 中已被删除
  • aof_pending_bio_fsync:后台 I/O 队列中 fsync 待处理作业的数量
  • aof_delayed_fsync:延迟fsync计数器

如果加载操作正在进行,则会添加以下附加字段:

  • loading_start_time:加载操作开始的基于纪元的时间戳
  • loading_total_bytes:文件总大小
  • loading_rdb_used_mem:文件创建时生成RDB文件的服务器的内存使用情况
  • loading_loaded_bytes:已加载的字节数
  • loading_loaded_perc:以百分比表示的相同值
  • loading_eta_seconds:加载完成的预计时间(以秒为单位)

线程 部分提供 I/O 线程的统计信息。统计信息包括分配的客户端数量、处理的读取事件数量和处理的写入事件数量。 Redis 8.0 中添加。

对于每个 I/O 线程,添加以下行:

  • io_thread_XXX: clients=XXX,reads=XXX,writes=XXX

统计数据 部分中所有字段的含义如下:

  • total_connections_received:服务器接受的连接总数
  • total_commands_processed:服务器处理的命令总数
  • instantaneous_ops_per_sec:每秒处理的命令数
  • total_net_input_bytes:从网络读取的总字节数
  • total_net_output_bytes:写入网络的总字节数
  • total_net_repl_input_bytes:用于复制目的从网络读取的总字节数
  • total_net_repl_output_bytes:出于复制目的写入网络的总字节数
  • instantaneous_input_kbps:网络每秒的读取速率(KB/秒)
  • instantaneous_output_kbps:网络每秒写入速率(KB/秒)
  • instantaneous_input_repl_kbps:用于复制目的的网络每秒读取速率(以 KB/秒为单位)
  • instantaneous_output_repl_kbps:用于复制目的的网络每秒写入速率(以 KB/秒为单位)
  • rejected_connections:由于maxclients限制而被拒绝的连接数
  • sync_full:与副本完全重新同步的数量
  • sync_partial_ok:接受的部分重新同步请求的数量
  • sync_partial_err:被拒绝的部分重新同步请求的数量
  • expired_subkeys:哈希字段过期事件数量
  • expired_keys:键过期事件总数
  • expired_stale_perc:可能过期的键百分比
  • expired_time_cap_reached_count:活动到期周期提前停止的次数
  • expire_cycle_cpu_milliseconds:活动到期周期所花费的累计时间量
  • evicted_keys:由于 maxmemory 限制而被逐出的键数量
  • evicted_clients:由于 maxmemory-clients 限制而被驱逐的客户端数量。 Redis 7.0 中添加。
  • evicted_scripts:由于 LRU 策略而被逐出的 EVAL 脚本数量,请参阅 EVAL 了解更多详细信息。 Redis 7.4 中添加。
  • total_eviction_exceeded_time:自服务器启动以来used_memory大于maxmemory的总时间,以毫秒为单位
  • current_eviction_exceeded_time:自used_memory上次升至高于maxmemory以来所经过的时间,以毫秒为单位
  • keyspace_hits:主字典中成功查找key的次数
  • keyspace_misses:主字典中键查找失败的次数
  • hash_templates:共享注册表中不同紧凑哈希模板的数量。 Redis 8.10 中添加。
  • hash_template_keys:紧凑哈希模板支持的键总数。 Redis 8.10 中添加。
  • pubsub_channels:具有客户端订阅的全球发布/订阅频道数量
  • pubsub_patterns:客户端订阅的发布/订阅模式的全局数量
  • pubsubshard_channels:具有客户端订阅的 pub/sub 分片通道的全球数量。 Redis 7.0.3 中添加
  • latest_fork_usec:最近一次分叉操作的持续时间(以微秒为单位)
  • total_forks:自服务器启动以来fork操作的总数
  • migrate_cached_sockets:为 MIGRATE 目的打开的套接字数量
  • slave_expires_tracked_keys:出于过期目的而跟踪的键数量(仅适用于可写副本)
  • active_defrag_hits:通过激活碎片整理过程执行的值重新分配的次数
  • active_defrag_misses:由活动碎片整理进程启动的中止值重新分配的数量
  • active_defrag_key_hits:主动进行碎片整理的键数量
  • active_defrag_key_misses:活动碎片整理过程跳过的键数
  • total_active_defrag_time:内存碎片超过限制的总时间,单位毫秒
  • current_active_defrag_time:上次内存碎片超过限制后经过的时间,单位毫秒
  • tracking_total_keys:服务器正在跟踪的键数量
  • tracking_total_items:正在跟踪的项目数,即每个键的客户端数之和
  • tracking_total_prefixes:服务器前缀表中跟踪的前缀数量(仅适用于广播模式)
  • unexpected_error_replies:意外错误回复的数量,这些错误类型来自 AOF 加载或复制
  • total_error_replies:发出的错误回复总数,即拒绝的命令(命令执行之前的错误)和失败的命令(命令执行中的错误)的总和
  • dump_payload_sanitizations:转储有效负载深度完整性验证的总数(请参阅 sanitize-dump-payload 配置)。
  • total_reads_processed:处理的读事件总数
  • total_writes_processed:处理的写事件总数
  • io_threaded_reads_processed:I/O线程处理的读事件数
  • io_threaded_writes_processed:I/O线程处理的写事件数量
  • client_query_buffer_limit_disconnections:由于客户端达到查询缓冲区限制而断开连接的总数
  • client_output_buffer_limit_disconnections:由于客户端达到输出缓冲区限制而断开连接的总数
  • reply_buffer_shrinks:输出缓冲区收缩总数
  • reply_buffer_expands:输出缓冲区扩展总数
  • eventloop_cycles:eventloop周期总数
  • eventloop_duration_sum:eventloop中花费的总时间(以微秒为单位)(包括I/O和命令处理)
  • eventloop_duration_cmd_sum:执行命令所花费的总时间(以微秒为单位)
  • instantaneous_eventloop_cycles_per_sec:每秒事件循环周期数
  • instantaneous_eventloop_duration_usec:单个eventloop周期花费的平均时间(以微秒为单位)
  • acl_access_denied_auth:认证失败次数
  • acl_access_denied_cmd:由于命令访问被拒绝而被拒绝的命令数
  • acl_access_denied_key:由于键访问被拒绝而被拒绝的命令数
  • acl_access_denied_channel:由于通道访问被拒绝而被拒绝的命令数
  • acl_access_denied_tls_cert:基于 TLS 证书的身份验证失败尝试次数
  • cluster_incompatible_ops:集群不兼容命令的数量。仅当 cluster-compatibility-sample-ratio 配置参数不为 0 时,才会出现此指标。在 Redis 8.0 中添加。
  • slowlog_commands_count:写入慢速日志1的命令
  • slowlog_commands_time_ms_sum:来自慢日志1的命令的执行时间总和
  • slowlog_commands_time_ms_max:来自慢日志1的命令的最大执行时间
  • total_client_processing_events:尝试处理客户端输入缓冲区;不保证任何命令被实际解析 1
  • eventloop_cycles_with_clients_processing:处理客户端输入缓冲区的事件循环周期 1
  • commands_per_parse_batch_sum:所有客户端 1 的所有解析批次中解析的命令的累积数量
  • commands_per_parse_batch_cnt:所有客户端的解析批次数。每次从客户端的查询缓冲区 1 解析至少一个命令时,都会计算一个批次
  • commands_per_parse_batch_avg:每批解析的平均命令(sum/cnt)。近似流水线深度 1
  1. Redis 8.8新增

复制 部分中所有字段的含义如下:

  • role:如果实例不是任何人的副本,则值为“master”;如果实例是某个主实例的副本,则值为“slave”。请注意,一个副本可以是另一个副本的主副本(链式复制)。
  • master_failover_state:正在进行的故障转移的状态(如果有)。
  • master_replid:Redis服务器的复制ID。
  • master_replid2:辅助复制ID,用于故障转移后的PSYNC。
  • master_repl_offset:服务器当前的复制偏移量
  • second_repl_offset:接受复制 ID 的最大偏移量
  • repl_backlog_active:指示复制积压处于活动状态的标志
  • repl_backlog_size:复制积压缓冲区的总大小(以字节为单位)
  • repl_backlog_first_byte_offset:复制积压缓冲区的主偏移量
  • repl_backlog_histlen:复制积压缓冲区中数据的大小(以字节为单位)

如果实例是副本,则提供以下附加字段:

  • master_host:主机的主机或IP地址
  • master_port:主监听TCP端口
  • master_link_status:链路状态(上/下)
  • master_last_io_seconds_ago:自上次与master交互以来的秒数
  • master_sync_in_progress:表示master正在同步到replica
  • slave_read_repl_offset:副本实例的读复制偏移量。
  • slave_repl_offset:副本实例的复制偏移量
  • slave_priority:实例作为故障转移候选者的优先级
  • slave_read_only:指示副本是否为只读的标志
  • replica_announced:指示副本是否由 Sentinel 公布的标志。

如果 SYNC 操作正在进行,则会提供以下附加字段:

  • master_sync_total_bytes:需要传输的字节总数。当大小未知时(例如,使用 repl-diskless-sync 配置指令时),这可能为 0
  • master_sync_read_bytes:已传输的字节数
  • master_sync_left_bytes:同步完成前剩余的字节数(当master_sync_total_bytes为0时可能为负数)
  • master_sync_perc:master_sync_read_bytes 与 master_sync_total_bytes 的百分比,或者当 master_sync_total_bytes 为 0 时使用 loading_rdb_used_mem 的近似值
  • master_sync_last_io_seconds_ago:SYNC 操作期间自上次传输 I/O 以来的秒数

如果主节点和副本节点之间的链路断开,则会提供一个附加字段:

  • master_link_down_since_seconds:自链路断开以来的秒数

始终提供以下字段:

  • connected_slaves:连接的副本数量

如果服务器配置了 min-slaves-to-write(或从 Redis 5 开始使用 min-replicas-to-write)指令,则会提供一个附加字段:

  • min_slaves_good_slaves:当前认为良好的副本数量

对于每个副本,添加以下行:

  • slaveXXX:id、IP 地址、端口、状态、偏移量、滞后

中央处理器 部分中所有字段的含义如下:

  • used_cpu_sys:Redis服务器消耗的系统CPU,是服务器进程所有线程(主线程和后台线程)消耗的系统CPU的总和
  • used_cpu_user:Redis服务器消耗的用户CPU,是服务器进程所有线程(主线程和后台线程)消耗的用户CPU的总和
  • used_cpu_sys_children:后台进程消耗的系统CPU
  • used_cpu_user_children:后台进程消耗的用户CPU
  • used_cpu_sys_main_thread:Redis服务器主线程消耗的系统CPU
  • used_cpu_user_main_thread:Redis服务器主线程消耗的用户CPU

命令统计 部分提供基于命令类型的统计信息:

  • calls - 达到命令执行的调用次数
  • usec - 这些命令消耗的总CPU时间
  • usec_per_call - 每个命令执行消耗的平均CPU
  • rejected_calls - 被拒绝的呼叫数量
  • failed_calls——调用失败次数

对于记录到 Slowlog 的命令,还会报告以下统计信息(Redis 8.8 中添加):

  • slowlog_count - 命令写入慢日志的次数
  • slowlog_time_ms_sum - 命令的执行时间总和(仅来自慢速日志)
  • slowlog_time_ms_max - 命令的最大执行时间(仅来自slowlog)

对于每种命令类型,添加以下行:

  • cmdstat_XXX:calls=XXX,usec=XXX,usec_per_call=XXX,rejected_calls=XXX,failed_calls=XXX, slowlog_count=XXX,slowlog_time_ms_sum=XXX,slowlog_time_ms_max=XXX

延迟统计 部分提供基于命令类型的延迟百分位分布统计数据。

默认情况下,导出的延迟百分位数为 p50、p99 和 p999。如果您需要更改导出的百分位数,请使用 CONFIG SET latency-tracking-info-percentiles "50.0 99.0 99.9"。

本节要求启用扩展延迟监控功能(默认情况下启用)。如果需要启用它,请使用CONFIG SET latency-tracking yes。

对于每种命令类型,添加以下行:

  • latency_percentiles_usec_XXX: p<percentile 1>=<percentile 1 value>,p<percentile 2>=<percentile 2 value>,...

错误统计 部分可以根据回复错误前缀(“-”后的第一个单词,直到第一个空格。示例:ERR)跟踪 Redis 内发生的不同错误。

对于每种错误类型,添加以下行:

  • errorstat_XXX: count=XXX

如果服务器检测到此部分充斥着过多的错误,则会将其禁用,显示单个 ERRORSTATS_DISABLED 错误,并将错误打印到服务器日志中。这可以通过 CONFIG RESETSTAT 复位。

热键 部分提供有关热键跟踪的信息。它由以下字段组成:

  • tracking_active:布尔标志(0 或 1),指示热键跟踪当前是否处于活动状态。
  • used_memory:用于热键跟踪的结构的内存开销(以字节为单位)。
  • cpu_time:更新热键跟踪结构所花费的时间(以毫秒为单位)。

哨兵 部分仅在 Redis Sentinel 实例中可用。它由以下字段组成:

  • sentinel_masters:该Sentinel实例监控的Redis master数量
  • sentinel_tilt:值为 1 表示该哨兵处于 TILT 模式
  • sentinel_tilt_since_seconds:当前 TILT 的持续时间(以秒为单位),如果没有 TILT,则为 -1。 Redis 7.0.0 中添加
  • sentinel_total_tilt:该哨兵自运行以来处于 TILT 模式的次数。
  • sentinel_running_scripts:该Sentinel当前正在执行的脚本数量
  • sentinel_scripts_queue_length:待执行的用户脚本队列的长度
  • sentinel_simulate_failure_flags:SENTINEL SIMULATE-FAILURE 命令的标志

集群 部分包含一个字段:

  • cluster_enabled:表示是否启用Redis集群。

模块 部分包含有关已加载模块的附加信息(如果模块提供)。本节中属性行的字段部分始终以模块名称为前缀。

Redis搜索字段

  • search_gc_bytes_collected:垃圾收集器从分片内存中的索引中释放的内存总量(以字节为单位)。3
  • search_bytes_collected:垃圾收集器从分片内存中的索引中释放的内存总量(以字节为单位)。在 8.0 中已弃用(重命名为 search_gc_bytes_collected),但在旧版本中仍然可用。1
  • search_gc_marked_deleted_vectors:向量索引中尚未清理的标记为删除的向量数量。3
  • search_marked_deleted_vectors:向量索引中尚未清理的标记为删除的向量数量。在 8.0 中已弃用(重命名为 search_gc_marked_delete_vectors),但在旧版本中仍然可用。1
  • search_gc_total_cycles:执行的垃圾收集周期总数。3
  • search_total_cycles:执行的垃圾收集周期总数。在 8.0 中已弃用(重命名为 search_gc_total_cycles),但在旧版本中仍然可用。1
  • search_gc_total_docs_not_collected_by_gc:标记为已删除的文档数量,其内存尚未被垃圾收集器释放。3
  • search_total_docs_not_collected_by_gc:标记为已删除的文档数量,其内存尚未被垃圾收集器释放。在 8.0 中已弃用(重命名为 search_gc_total_docs_not_collected),但在旧版本中仍然可用。1
  • search_gc_total_ms_run:分片中所有垃圾收集周期的总持续时间,以毫秒为单位。3
  • search_total_ms_run:分片中所有垃圾收集周期的总持续时间,以毫秒为单位。在 8.0 中已弃用(重命名为 search_gc_total_ms_run),但在旧版本中仍然可用。1

  • search_cursors_internal_idle:当前在分片中保存待处理结果的协调器游标总数。3

  • search_cursors_user_idle:用户显式请求的、当前在分片中保存待处理结果的游标总数。3
  • search_global_idle:当前在分片中保存待处理结果的用户和内部游标的总数。在 8.0 中已弃用(分为 search_cursors_internal_idle 和 search_cursors_user_idle),但在旧版本中仍然可用。1
  • search_cursors_internal_active:分片中协调器游标的总数,要么保存待处理结果,要么主动执行 FT.CURSOR READ。3
  • search_cursors_user_active:分片中用户游标的总数,要么持有待处理的结果,要么主动执行FT.CURSOR READ。3
  • search_global_total:分片中的用户和内部游标总数,要么保存待处理结果,要么主动执行 FT.CURSOR READ。在 8.0 中已弃用(分为 search_cursors_internal_active 和 search_cursors_user_active),但在旧版本中仍然可用。1
  • search_number_of_indexes:分片中索引的总数。1
  • search_number_of_active_indexes:运行后台索引和/或后台查询处理操作的索引总数。后台索引是指矢量摄取过程,或正在进行的后台索引器。1
  • search_number_of_active_indexes_running_queries:当前运行后台查询进程的索引总数。1
  • search_number_of_active_indexes_indexing:当前正在进行后台索引过程的索引总数。后台索引是指矢量摄取过程,或正在进行的后台索引器。该指标受到分配用于写入操作的 WORKER 线程数量加上索引数量的限制。1
  • search_total_active_write_threads:分片中当前运行的后台写入(索引)进程的总数。后台索引是指矢量摄取过程,或正在进行的后台索引器。该指标受到分配用于写入操作的线程数量的限制。1
  • search_fields_text_Text:分片中所有索引的 TEXT 字段总数。1
  • search_fields_text_Sortable:分片中所有索引的 SORTABLE TEXT 字段总数。该字段仅在其值大于 0 时出现。 1
  • search_fields_text_NoIndex:分片中所有索引的NOINDEX TEXT字段总数,仅用于排序,不用于索引。该字段仅在其值大于 0 时出现。 1
  • search_fields_numeric_Numeric:分片中所有索引的 NUMERIC 字段总数。1
  • search_fields_numeric_Sortable:分片中所有索引的 SORTABLE NUMERIC 字段总数。该字段仅在其值大于 0 时出现。 1
  • search_fields_numeric_NoIndex:分片中所有索引的NOINDEX NUMERIC字段总数;即仅用于排序但不建立索引。该字段仅在其值大于 0 时出现。 1
  • search_fields_tag_Tag:分片中所有索引的 TAG 字段总数。1
  • search_fields_tag_Sortable:分片中所有索引的 SORTABLE TAG 字段总数。该字段仅在其值大于 0 时出现。 1
  • search_fields_tag_NoIndex:分片中所有索引的NOINDEX TAG字段总数;即仅用于排序但不建立索引。该字段仅在其值大于 0 时出现。 1
  • search_fields_tag_CaseSensitive:分片中所有索引的 CASESENSITIVE TAG 字段总数。该字段仅在其值大于 0 时出现。 1
  • search_fields_geo_Geo:分片中所有索引的 GEO 字段总数。1
  • search_fields_geo_Sortable:分片中所有索引的 SORTABLE GEO 字段总数。该字段仅在其值大于 0 时出现。 1
  • search_fields_geo_NoIndex:分片中所有索引的NOINDEX GEO字段总数;即仅用于排序但不建立索引。该字段仅在其值大于 0 时出现。 1
  • search_fields_vector_Vector:分片中所有索引的 VECTOR 字段总数。1
  • search_fields_vector_Flat:分片中所有索引的 FLAT VECTOR 字段总数。1
  • search_fields_vector_HNSW:分片中所有索引的 HNSW VECTOR 字段总数。1
  • search_fields_geoshape_Geoshape:分片中所有索引的 GEOSHAPE 字段总数。2
  • search_fields_geoshape_Sortable:分片中所有索引的 SORTABLE GEOSHAPE 字段总数。该字段仅在其值大于 0 时出现。 2
  • search_fields_geoshape_NoIndex:分片中所有索引的NOINDEX GEOSHAPE字段总数;即仅用于排序但不建立索引。该字段仅在其值大于 0 时出现。 2
  • search_fields_<field>_IndexErrors:由于尝试对包含 field 字段的文档建立索引而导致的索引失败总数。1
  • search_used_memory_vector_index:分片中所有向量索引的内存使用总量。1
  • search_used_memory_indexes:分片中所有索引分配的估计总内存(以字节为单位)(包括 search_used_memory_vector_index 中占用的向量索引内存)。1
  • search_used_memory_indexes_human:分片中所有索引分配的估计总内存(以 MB 为单位)。1
  • search_smallest_memory_index:分片中内存使用量最小的索引的预计内存使用量(以字节为单位)。1
  • search_smallest_memory_index_human:分片中内存使用量最小的索引的预计内存使用量(以 MB 为单位)。1
  • search_largest_memory_index:分片中内存使用量最大的索引的预计内存使用量(以字节为单位)。1
  • search_largest_memory_index_human:分片中内存使用量最大的索引的预计内存使用量(以 MB 为单位)。1
  • search_total_indexing_time:索引操作所花费的总时间,不包括HNSW图中向量的后台索引。1
  • search_bytes_collected:垃圾收集器从分片内存中的索引中释放的内存总量(以字节为单位)。1
  • search_total_cycles:执行的垃圾收集周期总数。1
  • search_total_ms_run:分片中所有垃圾收集周期的总持续时间,以毫秒为单位。1
  • search_total_docs_not_collected_by_gc:标记为已删除且内存尚未被垃圾收集器释放的文档数量。1
  • search_marked_deleted_vectors:向量索引中尚未清理的标记为删除的向量数量。1
  • search_total_queries_processed:分片中成功执行查询的总数(使用游标时,不包括从现有游标读取的数据)。1
  • search_total_query_commands:成功执行查询命令的总数(包括FT.SEARCH、FT.AGGREGATE、FT.CURSOR READ)。1
  • search_total_query_execution_time_ms:所有查询命令的累计执行时间,包括FT.SEARCH、FT.AGGREGATE和FT.CURSOR READ,以毫秒为单位。1
  • search_total_active_queries:分片中当前正在执行的后台查询总数,不包括FT.CURSOR READ。1
  • search_errors_indexing_failures:分片中所有索引记录的索引失败总数。1
  • search_errors_for_index_with_max_failures:失败次数最多的索引中的索引失败次数。1
  • search_OOM_indexing_failures_indexes_count:由于内存不足 (OOM) 情况而导致后台索引进程失败的索引数量。2
  1. 在 RediSearch 2.6 中可用。
  2. 在 RediSearch 2.8 中可用。
  3. 在 RediSearch 8.0 中可用。

键空间部分提供了每个数据库主词典的统计信息。统计数据是键的数量以及过期的键的数量。

对于每个数据库,添加以下行:

  • dbXXX: keys=XXX,expires=XXX,avg_ttl=XXX,subexpiry=XXX

键大小 部分提供了数据集中每种数据类型(字符串、列表、集合、哈希和有序集合合)的键大小分布的详细统计信息。使用以 2 为底的对数直方图来跟踪分布。

以下是 Redis 的两个数据库实例的输出示例:

# Keysizes
db0_distrib_strings_sizes:2=1,4=1,8=1,16=1,32=1,64=1,128=1,256=1,512=1,1K=1,2K=1,4K=1,8K=1,16K=1,32K=1,64K=1,128K=1,256K=1,512K=1,1M=1
db0_distrib_lists_items:1=1,2=1,4=1,8=1,16=1,32=1,64=1,128=1,256=1,512=1,1K=1,2K=1,4K=1,8K=1,16K=1,32K=1,64K=1
db0_distrib_sets_items:1=1,2=1,4=1,8=1,16=1,32=1,64=1,128=1,256=1,512=1,1K=1,2K=1,4K=1,8K=1,16K=1,32K=1,64K=1
db0_distrib_zsets_items:1=1,2=1,4=1,8=1,16=1,32=1,64=1,128=1,256=1,512=1,1K=1,2K=1,4K=1,8K=1,16K=1,32K=1,64K=1
db0_distrib_hashes_items:1=1,2=1,4=1,8=1,16=1,32=1,64=1,128=1,256=1,512=1,1K=1,2K=1,4K=1,8K=1,16K=1,32K=1
db1_distrib_strings_sizes:2=1,4=1,8=1,16=1,32=1,64=1,128=1,256=1,512=1,1K=1,2K=1,4K=1,8K=1,16K=1,32K=1,64K=1,128K=1,256K=1,512K=1,1M=1
db1_distrib_lists_items:1=1,2=1,4=1,8=1,16=1,32=1,64=1,128=1,256=1,512=1,1K=1,2K=1,4K=1,8K=1,16K=1,32K=1,64K=1
db1_distrib_sets_items:1=1,2=1,4=1,8=1,16=1,32=1,64=1,128=1,256=1,512=1,1K=1,2K=1,4K=1,8K=1,16K=1,32K=1,64K=1
db1_distrib_zsets_items:1=1,2=1,4=1,8=1,16=1,32=1,64=1,128=1,256=1,512=1,1K=1,2K=1,4K=1,8K=1,16K=1,32K=1,64K=1
db1_distrib_hashes_items:1=1,2=1,4=1,8=1,16=1,32=1,64=1,128=1,256=1,512=1,1K=1,2K=1,4K=1,8K=1,16K=1,32K=1

调试 部分包含实验性指标,这些指标可能会在未来版本中更改或删除。调用INFO或INFO ALL时不会包含该值,只有使用INFO DEBUG时才会返回。

  • eventloop_duration_aof_sum:事件循环中刷新 AOF 所花费的总时间(以微秒为单位)。
  • eventloop_duration_cron_sum:cron 的总时间消耗(以微秒为单位)(包括 serverCron 和 beforeSleep,但不包括 IO 和 AOF 刷新)。
  • eventloop_duration_max:单个事件循环周期花费的最长时间(以微秒为单位)。
  • eventloop_cmd_per_cycle_max:单个事件循环周期中处理的最大命令数。
  • allocator_allocated_lua:分配器专门为 Lua 分配的总字节数,包括内部碎片。
  • allocator_active_lua:专门用于 Lua 的分配器活动​​页中的总字节数,包括外部碎片。
  • allocator_resident_lua:专门用于 Lua 的分配器中驻留的总字节数 (RSS)。这包括可以释放到操作系统的页面(通过 MEMORY PURGE,或只是等待)。
  • allocator_frag_bytes_lua:allocator_active_lua 和 allocator_allocated_lua 之间的差值。

关于本手册页中使用的“slave”一词的注释:从Redis 5开始,如果不是为了向后兼容,Redis项目不再使用slave这个词。不幸的是,在这个命令中,slave 这个词是协议的一部分,所以只有当这个 API 自然被弃用时,我们才能删除这种情况。

模块生成部分:从 Redis 6 开始,模块可以将其信息注入到 INFO 命令中。即使提供了 all 参数,这些默认情况下也会被排除(它将包括已加载模块的列表,但不包括其生成的信息字段)。要获取这些,您必须使用 modules 参数或 everything。

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
✅ 标准
✅ 主动-主动
✅ 标准
✅ 主动-主动
在 Redis 软件中,INFO 返回一组与 Redis 开源不同的字段。
不支持 脚本。

注意:Redis 软件或 Redis 云双活数据库上的键内存使用量与非双活数据库上的键内存使用量不同。这是因为内存使用包括一定量的 CRDB 开销。

此外,对于 JSON 键,Redis 实现了“共享字符串”机制,以便在多次使用相同的 JSON 字段名称或字符串类型的字段值(键间或键内)时节省内存。在这种情况下,Redis 不会多次存储字段名称或值,而是仅存储一次。双活数据库没有这种机制。

在非主动-主动数据库上,INFO (Memory >used_memory) 报告共享内存已被计数,但仅对所有键计数一次。在主动-主动数据库上,没有共享内存,因此如果字符串重复,它们会被存储多次。

示例

假设您有 10 个 JSON 键,每个键都有 5KB 的唯一内容和 5KB 的共享内容。

对于非主动-主动数据库,INFO (used_memory) 将报告 (10 个键 * 5KB) + 5KB ~= 55KB。最后一项“+ 5KB”是共享内容的大小。

对于双活数据库,INFO (used_memory) 将报告 10 个键 * 20KB ~= 200KB。此数字包括每个 JSON 键的一定量的 CRDB 开销。

返回值

RESP2

批量字符串回复:信息字段的映射,每行一个字段,采用 <field>:<value> 的形式,其中值可以是逗号分隔的映射,如 <key>=<val>。还包含以 # 开头的节标题行和空行。行可以包含节名称(以 # 字符开头)或属性。所有属性均采用 field:value 并以 \r\n 结尾的形式。

RESP3

逐字字符串回复:信息字段的映射,每行一个字段,采用 <field>:<value> 的形式,其中值可以是逗号分隔的映射,如 <key>=<val>。还包含以 # 开头的节标题行和空行。行可以包含节名称(以 # 字符开头)或属性。所有属性均采用 field:value 并以 \r\n 结尾的形式。

资料来源:Redis 官方 INFO 文档;中文内容参考 Redis 文档许可。