信息

Syntax
INFO [section [section ...]]
Available since:
1.0.0
Time complexity:
O(1)
ACL categories:
@slow, @dangerous,

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

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

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

它还可以接受以下值:

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

当没有提供参数时,假定使用default选项。

INFO

注释

请注意,根据Redis的版本不同,某些字段可能已被添加或删除。因此,一个健壮的客户端应用程序应通过跳过未知属性来解析此命令的结果,并优雅地处理缺失的字段。

以下是 Redis >= 2.4 的字段描述。

以下是server部分中所有字段的含义:

  • redis_version: Redis服务器的版本
  • redis_git_sha1: Git SHA1
  • redis_git_dirty: Git 脏标志
  • redis_build_id: 构建ID
  • redis_mode: 服务器的模式("standalone"、"sentinel" 或 "cluster")
  • 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: 在完成关闭序列之前,副本追赶复制的最大剩余时间。 此字段仅在关闭期间存在。

以下是clients部分中所有字段的含义:

  • connected_clients: 客户端连接数(不包括来自副本的连接)
  • cluster_connections: 集群总线使用的套接字数量的近似值
  • maxclients: maxclients 配置指令的值。这是 connected_clientsconnected_slavescluster_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: 处于发布订阅模式下的客户端数量 (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使用其分配器分配的总字节数(可能是标准的libcjemalloc,或其他替代分配器如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_perc: used_memory_peakused_memory 的百分比
  • 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: 脚本VM引擎用于EVAL框架的字节数(不包括在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: 脚本VM引擎用于Functions框架的字节数(不包括在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: 前一个值的人类可读表示
  • maxmemory: maxmemory 配置指令的值
  • maxmemory_human: 前一个值的人类可读表示
  • maxmemory_policy: maxmemory-policy 配置指令的值
  • mem_fragmentation_ratio: used_memory_rssused_memory 之间的比率。 请注意,这不仅包括碎片化,还包括其他进程开销(参见 allocator_* 指标),以及代码、共享库、堆栈等开销。
  • mem_fragmentation_bytes: used_memory_rssused_memory 之间的差值。 请注意,当总碎片字节数较低(几兆字节)时,高比率(例如1.5及以上)并不表示存在问题。
  • allocator_frag_ratio:: allocator_activeallocator_allocated 之间的比率。这是真正的(外部)碎片化指标(不是 mem_fragmentation_ratio)。
  • allocator_frag_bytes allocator_activeallocator_allocated 之间的差值。请参阅关于 mem_fragmentation_bytes 的说明。
  • allocator_rss_ratio: allocator_residentallocator_active 之间的比率。这通常表示分配器可以并且可能很快就会释放回操作系统的页面。
  • allocator_rss_bytes: allocator_residentallocator_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: 分配器中'muzzy'内存(RSS)的总字节数。Muzzy内存是指已经被释放但尚未完全返回给操作系统的内存。在需要时可以立即重用,或者在系统压力增加时由操作系统回收。
  • mem_not_counted_for_evict: 不用于键驱逐的内存。这基本上是临时副本和AOF缓冲区。
  • mem_clients_slaves: 由副本客户端使用的内存 - 从Redis 7.0开始,副本缓冲区与复制积压共享内存,因此当副本不触发内存使用增加时,此字段可能显示为0。
  • mem_clients_normal: 普通客户端使用的内存
  • mem_cluster_links: 当集群模式启用时,用于集群总线上对等节点链接的内存。
  • 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: 等待释放的对象数量(由于调用UNLINK,或使用ASYNC选项调用FLUSHDBFLUSHALL的结果)
  • lazyfreed_objects: 已被延迟释放的对象数量。

理想情况下,used_memory_rss 值应该只比 used_memory 稍高一些。 当 rss >> used 时,较大的差异可能意味着存在(外部)内存碎片,这可以通过检查 allocator_frag_ratioallocator_frag_bytes 来评估。 当 used >> 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: 子进程 fork 运行时,写时复制内存的大小(以字节为单位)
  • current_cow_size_age: current_cow_size 值的年龄,以秒为单位。
  • current_fork_perc: 当前fork进程的进度百分比。对于AOF和RDB fork,它是current_save_keys_processedcurrent_save_keys_total的百分比。
  • current_save_keys_processed: 当前保存操作处理的键的数量
  • 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 指的是自上次调用 SAVEBGSAVE 以来,在数据集中产生某种更改的操作次数。

如果启用了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: 加载完成的预计剩余时间(以秒为单位)

以下是stats部分中所有字段的含义:

  • 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: 在主字典中成功查找键的次数
  • keyspace_misses: 在主字典中查找键失败的次数
  • pubsub_channels: 全局的发布/订阅频道数量,带有客户端订阅
  • pubsub_patterns: 全局的发布/订阅模式数量,带有客户端订阅
  • pubsubshard_channels: 全局的pub/sub分片频道数量,这些频道有客户端订阅。在Redis 7.0.3中添加
  • latest_fork_usec: 最新fork操作的持续时间,以微秒为单位
  • 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_duration_sum: 事件循环中花费的总时间,单位为微秒(包括I/O和命令处理)
  • eventloop_duration_cmd_sum: 执行命令所花费的总时间,单位为微秒
  • instantaneous_eventloop_cycles_per_sec: 每秒的事件循环次数
  • instantaneous_eventloop_duration_usec: 单个事件循环周期中花费的平均时间,单位为微秒
  • acl_access_denied_auth: 认证失败次数
  • acl_access_denied_cmd: 由于访问被拒绝而拒绝的命令数量
  • acl_access_denied_key: 由于访问密钥被拒绝而被拒绝的命令数量
  • acl_access_denied_channel: 由于访问通道被拒绝而被拒绝的命令数量

以下是replication部分中所有字段的含义:

  • 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_sync_in_progress: 表示主节点正在同步到副本
  • slave_read_repl_offset: 副本实例的读取复制偏移量。
  • slave_repl_offset: 副本实例的复制偏移量
  • slave_priority: 实例作为故障转移候选者的优先级
  • slave_read_only: 标志指示副本是否为只读
  • replica_announced: 标志指示副本是否由Sentinel宣布。

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

  • master_sync_total_bytes: 需要传输的总字节数。当大小未知时,这可能为0(例如,当使用repl-diskless-sync配置指令时)
  • master_sync_read_bytes: 已传输的字节数
  • master_sync_left_bytes: 同步完成前剩余的字节数 (当master_sync_total_bytes为0时可能为负数)
  • master_sync_perc: 从master_sync_total_bytesmaster_sync_read_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地址, 端口, 状态, 偏移量, 延迟

以下是cpu部分所有字段的含义:

  • 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

commandstats 部分提供了基于命令类型的统计信息, 包括达到命令执行的调用次数(未被拒绝的), 这些命令消耗的总CPU时间,每次命令执行消耗的平均CPU时间, 被拒绝的调用次数(命令执行前的错误),以及失败的调用次数 (命令执行中的错误)。

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

  • cmdstat_XXX: calls=XXX,usec=XXX,usec_per_call=XXX,rejected_calls=XXX,failed_calls=XXX

latencystats 部分提供了基于命令类型的延迟百分位分布统计信息。

默认情况下,导出的延迟百分位数是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<百分位 1>=<百分位 1 值>,p<百分位 2>=<百分位 2 值>,...

errorstats 部分用于跟踪 Redis 中发生的不同错误,基于回复错误前缀("-" 后的第一个单词,直到第一个空格。例如:ERR)。

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

  • errorstat_XXX: count=XXX

如果服务器检测到该部分被大量错误淹没,它将被禁用,显示一个ERRORSTATS_DISABLED错误,并将错误打印到服务器日志中。 这可以通过CONFIG RESETSTAT来重置。

sentinel 部分仅在 Redis Sentinel 实例中可用。它包含以下字段:

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

cluster 部分目前只包含一个唯一的字段:

  • cluster_enabled: 表示Redis集群已启用

模块部分包含有关已加载模块的附加信息,如果模块提供了这些信息。在此部分中,属性行的字段部分始终以模块名称作为前缀。

keyspace 部分提供了每个数据库主字典的统计信息。 统计信息包括键的数量和带有过期时间的键的数量。

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

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

debug 部分包含实验性指标,这些指标可能会在未来的版本中更改或删除。 当调用 INFOINFO 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_luaallocator_allocated_lua 之间的差值。

关于本手册中使用的“slave”一词的说明:从Redis 5开始,如果不是为了向后兼容,Redis项目不再使用“slave”一词。不幸的是,在这个命令中,“slave”一词是协议的一部分,因此我们只能在该API自然弃用时才能删除这些出现的情况。

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

Redis 软件与 Redis 云兼容性

Redis
企业版
Redis
备注
✅ 标准
✅ 主动-主动
✅ 标准
✅ 主动-主动
在 Redis Enterprise 中,INFO 返回的字段集与 Redis 社区版不同。
不支持 scripts

注意:在Redis软件或Redis Cloud的主动-主动数据库上,关键内存使用情况与非主动-主动数据库不同。这是因为内存使用包括一定量的CRDB开销。

此外,对于JSON键,Redis实现了一种“共享字符串”机制,以节省内存,当相同的JSON字段名称或字符串类型的字段值被多次使用时(无论是在键之间还是键内部)。 在这种情况下,Redis不会多次存储字段名称或值,而是只存储一次。这种机制在主动-主动数据库中不存在。

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

示例

假设你有十个JSON键,每个键有5KB的唯一内容和5KB的共享内容。

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

对于主动-主动数据库,INFO (used_memory) 将报告 10 个键 * 20KB ~= 200KB。这个数字包括每个 JSON 键的一些 CRDB 开销。

RESP2/RESP3 回复

Bulk string reply: 信息字段的映射,每行一个字段,形式为:,其中值可以是逗号分隔的映射,如=。还包含以#开头的部分标题行和空行。

行可以包含一个部分名称(以#字符开头)或一个属性。所有属性都以field:value的形式存在,并以\r\n结束。


历史

  • 从 Redis 7.0.0 版本开始:增加了对多个部分参数的支持。
RATE THIS PAGE
Back to top ↑