info 命令
INFO
命令以一种易于理解和阅读的格式,返回关于Redis服务器的各种信息和统计数值。
语法
INFO [section]
通过给定可选的参数 section ,可以让命令只返回某一部分的信息:
-
server
:查看 Redis 服务器信息,如 Redis 的版本 -
clients
:客户端的连接部分 -
memory
:内存消耗相关信息 -
persistence
: RDB和AOF相关信息 -
stats
:一般统计 -
replication
:主/从复制信息 -
cpu
:统计CPU的消耗 -
commandstats
: Redis命令统计 -
cluster
: Redis集群信息 -
keyspace
:数据库的相关统计 -
modules
: Module 相关信息
它也可以采取以下值:
-
all
:返回所有信息 -
default
:值返回默认设置的信息 -
everything
:包括all
和modules
如果没有使用任何参数时,默认为
default
。
返回值
多行字符串:文本行的合集
全部信息
每一行包含了包含一种信息或者属性(从#字符开始)。所有的属性都是以字段:值(
field:value
)的形式,以
\r\n
结尾。
redis> INFO # Server redis_version:6.0.9 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:95eb037379d5f3f8 redis_mode:standalone os:Linux 3.10.0-862.el7.x86_64 x86_64 arch_bits:64 multiplexing_api:epoll atomicvar_api:atomic-builtin gcc_version:8.3.0 process_id:1 run_id:9ad957e54a1c30045cc225a918a16451d18c4852 tcp_port:6379 uptime_in_seconds:14739964 uptime_in_days:170 hz:10 configured_hz:10 lru_clock:9533449 executable:/data/redis-server config_file: io_threads_active:0 # Clients connected_clients:8 client_recent_max_input_buffer:8 client_recent_max_output_buffer:0 blocked_clients:0 tracking_clients:0 clients_in_timeout_table:0 # Memory used_memory:56409912 used_memory_human:53.80M used_memory_rss:65236992 used_memory_rss_human:62.21M used_memory_peak:56461800 used_memory_peak_human:53.85M used_memory_peak_perc:99.91% used_memory_overhead:17087768 used_memory_startup:803152 used_memory_dataset:39322144 used_memory_dataset_perc:70.71% allocator_allocated:56402784 allocator_active:56721408 allocator_resident:59928576 total_system_memory:8201789440 total_system_memory_human:7.64G used_memory_lua:37888 used_memory_lua_human:37.00K used_memory_scripts:0 used_memory_scripts_human:0B number_of_cached_scripts:0 maxmemory:1024000000 maxmemory_human:976.56M maxmemory_policy:allkeys-lru allocator_frag_ratio:1.01 allocator_frag_bytes:318624 allocator_rss_ratio:1.06 allocator_rss_bytes:3207168 rss_overhead_ratio:1.09 rss_overhead_bytes:5308416 mem_fragmentation_ratio:1.16 mem_fragmentation_bytes:8910600 mem_not_counted_for_evict:0 mem_replication_backlog:0 mem_clients_slaves:0 mem_clients_normal:164064 mem_aof_buffer:0 mem_allocator:jemalloc-5.1.0 active_defrag_running:0 lazyfree_pending_objects:0 # Persistence loading:0 rdb_changes_since_last_save:37 rdb_bgsave_in_progress:0 rdb_last_save_time:1620145799 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:0 rdb_current_bgsave_time_sec:-1 rdb_last_cow_size:2813952 aof_enabled:0 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok aof_last_cow_size:0 module_fork_in_progress:0 module_fork_last_cow_size:0 # Stats total_connections_received:516 total_commands_processed:3765324 instantaneous_ops_per_sec:0 total_net_input_bytes:310647618 total_net_output_bytes:49829717 instantaneous_input_kbps:0.00 instantaneous_output_kbps:0.00 rejected_connections:0 sync_full:0 sync_partial_ok:0 sync_partial_err:0 expired_keys:5419 expired_stale_perc:0.00 expired_time_cap_reached_count:0 expire_cycle_cpu_milliseconds:768610 evicted_keys:0 keyspace_hits:869128 keyspace_misses:368408 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:2269 migrate_cached_sockets:0 slave_expires_tracked_keys:0 active_defrag_hits:0 active_defrag_misses:0 active_defrag_key_hits:0 active_defrag_key_misses:0 tracking_total_keys:0 tracking_total_items:0 tracking_total_prefixes:0 unexpected_error_replies:0 total_reads_processed:3736456 total_writes_processed:3735954 io_threaded_reads_processed:0 io_threaded_writes_processed:0 # Replication role:master connected_slaves:0 master_replid:2f07cd9bedbb1c93ae4361e19fd31e4af00d8fbc master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 # CPU used_cpu_sys:14116.239050 used_cpu_user:11544.253149 used_cpu_sys_children:253.718299 used_cpu_user_children:3039.462022 # Modules # Cluster cluster_enabled:0 # Keyspace db0:keys=298154,expires=1,avg_ttl=2304774500
注意 :请注意不同Redis版本会添加或者删除一些字段。一个健壮的客户端应用解析该命令的结果时,应该跳过未知的字段,并且优雅的处理缺少的字段。
字段说明
以下是Redis >= 2.4的字段说明。
下面是所有 server 相关的信息:
-
redis_version
: Redis 服务器版本 -
redis_git_sha1
: Git SHA1 -
redis_git_dirty
: Git dirty flag -
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 -
run_id
: Redis 服务器的随机标识符(用于 Sentinel 和集群) -
tcp_port
: TCP/IP 监听端口 -
uptime_in_seconds
:自 Redis 服务器启动以来,经过的秒数 -
uptime_in_days
:自 Redis 服务器启动以来,经过的天数 -
hz
:服务器的频率设置 -
lru_clock
:以分钟为单位进行自增的时钟,用于 LRU 管理 -
executable
:服务器的可执行文件路径 -
config_file
:配置文件路径
下面是所有 clients 相关的信息:
-
connected_clients
:已连接客户端的数量(不包括通过从属服务器连接的客户端) -
client_longest_output_list
:当前连接的客户端当中,最长的输出列表 -
client_biggest_input_buf
:当前连接的客户端当中,最大输入缓存 -
blocked_clients
:正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量
下面是所有 memory 相关的信息:
-
used_memory
:由 Redis 分配器分配的内存总量,以字节(byte)为单位 -
used_memory_human
:以人类可读的格式返回 Redis 分配的内存总量 -
used_memory_rss
:从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。 -
used_memory_peak
: Redis 的内存消耗峰值(以字节为单位) -
used_memory_peak_human
:以人类可读的格式返回 Redis 的内存消耗峰值 -
used_memory_peak_perc
:使用内存占峰值内存的百分比 -
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
:以人类可读的格式返回 Redis主机具有的内存总量 -
used_memory_lua
: Lua 引擎所使用的内存大小(以字节为单位) -
used_memory_lua_human
:以人类可读的格式返回 Lua 引擎所使用的内存大小 -
maxmemory
: maxmemory配置指令的值 -
maxmemory_human
:以人类可读的格式返回 maxmemory配置指令的值 -
maxmemory_policy
: maxmemory-policy配置指令的值 -
mem_fragmentation_ratio
:used_memory_rss
和used_memory
之间的比率 -
mem_allocator
:在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。 -
active_defrag_running
:指示活动碎片整理是否处于活动状态的标志 -
lazyfree_pending_objects
:等待释放的对象数(由于使用ASYNC选项调用UNLINK或FLUSHDB和FLUSHALL)
在理想情况下, used memory rss 的值应该只比 used_memory 稍微高一点儿。
当 rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。
内存碎片的比率可以通过 mem fragmentation ratio 的值看出。
当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。
由于Redis无法控制其分配的内存如何映射到内存页,因此常住内存(used memory rss)很高通常是内存使用量激增的结果。
当 Redis 释放内存时,内存将返回给分配器,分配器可能会,也可能不会,将内存返还给操作系统。
如果 Redis 释放了内存,却没有将内存返还给操作系统,那么 used_memory 的值可能和操作系统显示的 Redis 内存占用并不一致。
查看 used memory peak 的值可以验证这种情况是否发生。
要获得有关服务器内存的其他内省信息,可以参考
MEMORY STATS
和
MEMORY DOCTOR
。
下面是所有 persistence 相关的信息:
-
loading
:指示转储文件(dump)的加载是否正在进行的标志 -
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保存操作期间copy-on-write分配的字节大小 -
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重写操作期间copy-on-write分配的字节大小
changes_since_last_save
指的是从上次调用
SAVE
或者
BGSAVE
以来,在数据集中产生某种变化的操作的数量。
如果启用了AOF,则会添加以下这些额外的字段:
-
aof_current_size
:当前的AOF文件大小 -
aof_base_size
:上次启动或重写时的AOF文件大小 -
aof_pending_rewrite
:指示AOF重写操作是否会在当前RDB保存操作完成后立即执行的标志。 -
aof_buffer_length
: AOF缓冲区大小 -
aof_rewrite_buffer_length
: AOF重写缓冲区大小 -
aof_pending_bio_fsync
:在后台IO队列中等待fsync处理的任务数 -
aof_delayed_fsync
:延迟fsync计数器
如果正在执行加载操作,将会添加这些额外的字段:
-
loading_start_time
:加载操作的开始时间(基于纪元的时间戳) -
loading_total_bytes
:文件总大小 -
loading_loaded_bytes
:已经加载的字节数 -
loading_loaded_perc
:已经加载的百分比 -
loading_eta_seconds
:预计加载完成所需的剩余秒数
下面是所有 stats 相关的信息:
-
total_connections_received
:服务器接受的连接总数 -
total_commands_processed
:服务器处理的命令总数 -
instantaneous_ops_per_sec
:每秒处理的命令数 -
rejected_connections
:由于maxclients
限制而拒绝的连接数 -
expired_keys
: key到期事件的总数 -
evicted_keys
:由于maxmemory
限制而导致被驱逐的key的数量 -
keyspace_hits
:在主字典中成功查找到key的次数 -
keyspace_misses
:在主字典中查找key失败的次数 -
pubsub_channels
:拥有客户端订阅的全局pub/sub通道数 -
pubsub_patterns
:拥有客户端订阅的全局pub/sub模式数 -
latest_fork_usec
:最新fork操作的持续时间,以微秒为单位
下面是所有 replication 相关的信息:
-
role
:如果实例不是任何节点的从节点,则值是”master”,如果实例从某个节点同步数据,则是”slave”。请注意,一个从节点可以是另一个从节点的主节点(菊花链)。
如果实例是从节点,则会提供以下这些额外字段:
-
master_host
:主节点的Host名称或IP地址 -
master_port
:主节点监听的TCP端口 -
master_link_status
:连接状态(up或者down) -
master_last_io_seconds_ago
:自上次与主节点交互以来,经过的秒数 -
master_sync_in_progress
:指示主节点正在与从节点同步
如果SYNC操作正在进行,则会提供以下这些字段:
-
master_sync_left_bytes
:同步完成前剩余的字节数 -
master_sync_last_io_seconds_ago
:在SYNC操作期间自上次传输IO以来的秒数
如果主从节点之间的连接断开了,则会提供一个额外的字段:
-
master_link_down_since_seconds
:自连接断开以来,经过的秒数
以下字段将始终提供:
-
connected_slaves
:已连接的从节点数
对每个从节点,将会添加以下行:
-
slaveXXX
: id,地址,端口号,状态
下面是所有 cpu 相关的信息:
-
used_cpu_sys
:由Redis服务器消耗的系统CPU -
used_cpu_user
:由Redis服务器消耗的用户CPU -
used_cpu_sys_children
:由后台进程消耗的系统CPU -
used_cpu_user_children
:由后台进程消耗的用户CPU
commandstats 部分提供基于命令类型的统计,包含调用次数,这些命令消耗的总CPU时间,以及每个命令执行所消耗的平均CPU。
对于每一个命令类型,添加以下行:
-
cmdstat_XXX
:calls=XXX,usec=XXX,usec_per_call=XXX
cluster 部分当前只包含一个唯一的字段:
-
cluster_enabled
:表示已启用Redis集群
keyspace 部分提供有关每个数据库的主字典的统计,统计信息是key的总数和过期的key的总数。
对于每个数据库,提供以下行:
-
dbXXX
:keys=XXX,expires=XXX