Redis info 命令详解

最近在研究Java 使用Jedis连接Redis,有个jedis.info()命令,获取redis的相关信息,这里记录下返回的每个值的详解,不带任何参数调用info返回的数据如下:通过给定可选的参数 section ,可以让命令只返回某一部分的信息。

# Server
redis_version:999.999.999
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:581578ab5320e2b1
redis_mode:standalone
os:Darwin 18.2.0 x86_64
arch_bits:64
multiplexing_api:kqueue
atomicvar_api:atomic-builtin
gcc_version:4.2.1
process_id:93
run_id:2c01647915ddd0633abb2c6629f241afca3610c7
tcp_port:6379
uptime_in_seconds:102469
uptime_in_days:1
hz:10
configured_hz:10
lru_clock:6537460
executable:/usr/local/bin/redis-server
config_file:/Users/weijinhui/Redis/redis-unstable/redis.conf

# Clients
connected_clients:1
client_recent_max_input_buffer:2
client_recent_max_output_buffer:0
blocked_clients:0

# Memory
used_memory:1059376
used_memory_human:1.01M
used_memory_rss:688128
used_memory_rss_human:672.00K
used_memory_peak:1270720
used_memory_peak_human:1.21M
used_memory_peak_perc:83.37%
used_memory_overhead:1037990
used_memory_startup:988048
used_memory_dataset:21386
used_memory_dataset_perc:29.98%
allocator_allocated:1024512
allocator_active:650240
allocator_resident:650240
total_system_memory:8589934592
total_system_memory_human:8.00G
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:0
maxmemory_human:0B
maxmemory_policy:noeviction
allocator_frag_ratio:0.63
allocator_frag_bytes:18446744073709177344
allocator_rss_ratio:1.00
allocator_rss_bytes:0
rss_overhead_ratio:1.06
rss_overhead_bytes:37888
mem_fragmentation_ratio:0.67
mem_fragmentation_bytes:-336384
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_clients_slaves:0
mem_clients_normal:49694
mem_aof_buffer:0
mem_allocator:libc
active_defrag_running:0
lazyfree_pending_objects:0

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1549938863
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:0
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

# Stats
total_connections_received:80
total_commands_processed:1115
instantaneous_ops_per_sec:0
total_net_input_bytes:27125
total_net_output_bytes:36412
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:0
expired_stale_perc:0.00
expired_time_cap_reached_count:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
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

# Replication
role:master
connected_slaves:0
master_replid:28ef8fd4aa90632cf1d2ce9c258eed7657004a1d
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:16.693537
used_cpu_user:10.184285
used_cpu_sys_children:0.000000
used_cpu_user_children:0.000000

# Commandstats
cmdstat_select:calls=572,usec=10712,usec_per_call=18.73
cmdstat_auth:calls=159,usec=3909,usec_per_call=24.58
cmdstat_info:calls=11,usec=87208,usec_per_call=7928.00
cmdstat_dbsize:calls=305,usec=44030,usec_per_call=144.36
cmdstat_config:calls=68,usec=45106,usec_per_call=663.32

# Cluster
cluster_enabled:0

# Keyspace
db0:keys=2,expires=0,avg_ttl=0

下面则是每个值的详解:

  • server : 一般 Redis 服务器信息,包含以下域:
  • redis_version : Redis 服务器版本
  • redis_git_sha1 : Git SHA1
  • redis_git_dirty : Git dirty flag
  • os : Redis 服务器的宿主操作系统
  • arch_bits : 架构(32 或 64 位)
  • multiplexing_api : Redis 所使用的事件处理机制
  • gcc_version : 编译 Redis 时所使用的 GCC 版本
  • process_id : 服务器进程的 PID
  • run_id : Redis 服务器的随机标识符(用于 Sentinel 和集群)
  • tcp_port : TCP/IP 监听端口
  • uptime_in_seconds : 自 Redis 服务器启动以来,经过的秒数
  • uptime_in_days : 自 Redis 服务器启动以来,经过的天数
  • lru_clock : 以分钟为单位进行自增的时钟,用于 LRU 管理
  • executable:执行文件
  • config_file:配置文件路径
  • clients : 已连接客户端信息,包含以下域:memory : 内存信息,包含以下域:
  • connected_clients : 已连接客户端的数量(不包括通过从属服务器连接的客户端)
  • client_longest_output_list : 当前连接的客户端当中,最长的输出列表
  • client_longest_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/ used_memory_peak) *100%
  • used_memory_overhead:Redis为了维护数据集的内部机制所需的内存开销,包括所有客户端输出缓冲区、查询缓冲区、AOF重写缓冲区和主从复制的backlog。
  • used_memory_startup:Redis服务器启动时消耗的内存
  • 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 : Lua 引擎所使用的内存大小(以字节为单位)
  • used_memory_lua_human:以人类可读的格式,显示Lua脚本存储占用的内存
  • maxmemory:Redis实例的最大内存配置
  • maxmemory_human:以人类可读的格式,显示Redis实例的最大内存配置
  • maxmemory_policy:当达到maxmemory时的淘汰策略
  • mem_fragmentation_ratio : used_memory_rss 和 used_memory 之间的比率
  • mem_allocator : 在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。
  • active_defrag_running:表示没有活动的defrag任务正在运行,1表示有活动的defrag任务正在运行(defrag:表示内存碎片整理)
  • lazyfree_pending_objects:0表示不存在延迟释放(也有资料翻译未惰性删除)的挂起对象

说明:

在理想情况下, used_memory_rss 的值应该只比 used_memory 稍微高一点儿。

当 rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。

内存碎片的比率可以通过 mem_fragmentation_ratio 的值看出。

当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。

当 Redis 释放内存时,分配器可能会,也可能不会,将内存返还给操作系统。

如果 Redis 释放了内存,却没有将内存返还给操作系统,那么 used_memory 的值可能和操作系统显示的 Redis 内存占用并不一致。

查看 used_memory_peak 的值可以验证这种情况是否发生。

  • persistence : RDB 和 AOF 的相关信息,包含以下域:
  • loading:服务器是否正在载入持久化文件
  • rdb_changes_since_last_save:离最近一次成功生成rdb文件,写入命令的个数,即有多少个写入命令没有持久化
  • rdb_bgsave_in_progress:服务器是否正在创建rdb文件
  • rdb_last_save_time:离最近一次成功创建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过程中父进程与子进程相比执行了多少修改(包括读缓冲区,写缓冲区,数据修改等)。
  • aof_enabled:是否开启了aof
  • aof_rewrite_in_progress:标识aof的rewrite操作是否在进行中
  • aof_rewrite_scheduled:rewrite任务计划,当客户端发送bgrewriteaof指令,如果当前rewrite子进程正在执行,那么将客户端请求的bgrewriteaof变为计划任务,待aof子进程结束后执行rewrite 
  • aof_last_rewrite_time_sec:最近一次aof rewrite耗费的时长
  • aof_current_rewrite_time_sec:如果rewrite操作正在进行,则记录所使用的时间,单位秒
  • aof_last_bgrewrite_status:上次bgrewriteaof操作的状态
  • aof_last_write_status:上次aof写入状态
  • aof_current_size:aof当前尺寸
  • aof_base_size:服务器启动时或者aof重写最近一次执行之后aof文件的大小
  • aof_pending_rewrite:是否有aof重写操作在等待rdb文件创建完毕之后执行?
  • aof_buffer_length:aof buffer的大小
  • aof_rewrite_buffer_length:aof rewrite buffer的大小
  • aof_pending_bio_fsync:后台I/O队列里面,等待执行的fsync调用数量
  • aof_delayed_fsync:被延迟的fsync调用数量
  • stats : 一般统计信息,包含以下域:
  • total_connections_received:新创建连接个数,如果新创建连接过多,过度地创建和销毁连接对性能有影响,说明短连接严重或连接池使用有问题,需调研代码的连接设置
  • total_commands_processed:redis处理的命令数
  • instantaneous_ops_per_sec:redis当前的qps,redis内部较实时的每秒执行的命令数
  • total_net_input_bytes:redis网络入口流量字节数
  • total_net_output_bytes:redis网络出口流量字节数
  • instantaneous_input_kbps:redis网络入口kps
  • instantaneous_output_kbps:redis网络出口kps
  • rejected_connections:拒绝的连接个数,redis连接个数达到maxclients限制,拒绝新连接的个数
  • sync_full:主从完全同步成功次数
  • sync_partial_ok:主从部分同步成功次数
  • sync_partial_err:主从部分同步失败次数
  • expired_keys:运行以来过期的key的数量
  • evicted_keys:运行以来剔除(超过了maxmemory后)的key的数量
  • keyspace_hits:命中次数
  • keyspace_misses:没命中次数
  • pubsub_channels:当前使用中的频道数量
  • pubsub_patterns:当前使用的模式的数量
  • latest_fork_usec:最近一次fork操作阻塞redis进程的耗时数,单位微秒
  • migrate_cached_sockets:是否已经缓存了到该地址的连接
  • replication : 主/从复制信息,包含以下域:
  • role:实例的角色,是master or slave
  • connected_slaves:连接的slave实例个数
  • master_replid:主实例启动随机字符串
  • master_replid2:主实例启动随机字符串2
  • master_repl_offset:主从同步偏移量,此值如果和上面的offset相同说明主从一致没延迟,与master_replid可被用来标识主实例复制流中的位置。
  • second_repl_offset:主从同步偏移量2,此值如果和上面的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的大小
  • cpu : CPU 计算量统计信息,包含以下域:
  • used_cpu_sys:将所有redis主进程在核心态所占用的CPU时求和累计起来
  • used_cpu_user:将所有redis主进程在用户态所占用的CPU时求和累计起来
  • used_cpu_sys_children:将后台进程在核心态所占用的CPU时求和累计起来
  • used_cpu_user_children:将后台进程在用户态所占用的CPU时求和累计起来
  • commandstats : Redis 命令统计信息,包含以下域:
  • cmdstat_set:Set 命令统计
  • cmdstat_ping:Ping 命令统计
  • cmdstat_del:Del命令统计
  • cmdstat_psync:Psync命令统计
  • cmdstat_keys:Keys命令统计
  • cmdstat_hmset:Hmset命令统计
  • cmdstat_command:Command命令统计
  • cmdstat_info:Info命令统计
  • cmdstat_replconf:Replconf命令统计
  • cmdstat_client:Client命令统计
  • cmdstat_hgetall:Hgetall命令统计
  • cluster : Redis 集群信息,包含以下域:
  • cluster_enabled:实例是否启用集群模式
  • keyspace : 数据库相关的统计信息,包含以下域:
  • db0:db0的key的数量,以及带有生存期的key的数,平均存活时间

除上面给出的这些值以外,参数还可以是下面这两个:

  • all : 返回所有信息
  • default : 返回默认选择的信息

当不带参数直接调用 INFO 命令时,使用 default 作为默认参数。

不同版本的 Redis 可能对返回的一些域进行了增加或删减。

因此,一个健壮的客户端程序在对 INFO 命令的输出进行分析时,应该能够跳过不认识的域,并且妥善地处理丢失不见的域。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wjhsmart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值