以下内容摘自雪球,在公司内部的docs上的内容总结,部分隐私信息已经处理改动


 

Redis参数 

解释

备注

tcp_port 

tcp 端口 

 

uptime_in_seconds 

自 Redis 服务器启动以来,经过的秒数 

 

uptime_in_days 

 自 Redis 服务器启动以来,经过的天数 

 

blocked_clients 

正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量 

 

aof_rewrite_scheduled 

标识是否将要在rdb save操作结束后执行 

 

total_net_input_bytes 

redis网络入口流量字节数 

 

hz 

10,redis内部调度(进行关闭timeout的客户端,删除过期key等等)频率,程序规定serverCron每秒运行10次 

 

redis_build_id 

redis build id 

 

sync_partial_err 

主从部分同步失败次数 

 

aof_last_bgrewrite_status 

上次bgrewriteaof操作的状态 

 

multiplexing_api 

epoll,redis所使用的事件处理机制 

 

client_biggest_input_buf 

当前连接的客户端当中,最大输入缓存,用client list命令观察qbuf和qbuf-free两个字段最大值 

 

aof_current_rewrite_time_sec 

如果rewrite操作正在进行,则记录所使用的时间,单位秒 

 

aof_enabled 

是否开启了aof,默认不开启 

 

aof_current_size 

aof当前大小 

 

master_repl_offset 

主从同步偏移量

此值如果和上面的offset相同说明主从一致没延迟 

repl_backlog_first_byte_offset 

复制缓冲区里偏移量的大小 

 

used_cpu_user 

将所有redis主进程在用户态所占用的CPU时求和累计起来 

 

rdb_last_bgsave_status 

最近一次rdb持久化是否成功 

 

redis_mode 

cluster,运行模式,单机或者集群 

 

redis_git_dirty 

Git dirty flag 

 

aof_delayed_fsync 

被延迟的fsync调用数量 

 

repl_backlog_histlen 

此值等于 master_repl_offset - repl_backlog_first_byte_offset

该值不会超过repl_backlog_size的大小 

loading 

loading 状态 

 

evicted_keys 

运行以来剔除(超过了maxmemory后)的key的数量 

 

cluster_enabled 

实例是否启用集群模式 

 

redis_version 

redis服务器版本 

 

aof_last_write_status 

上次aof写入状态 

 

repl_backlog_active 

复制积压缓冲区是否开启 

 

mem_allocator 

在编译时指定的redis所使用的内存分配器。可以是libc、jemalloc或者tcmalloc 

 

detail 

# Serve 

 

used_memory_peak 

redis的内存消耗峰值(以字节为单位)  

 

instantaneous_ops_per_sec 

redis当前的qps,redis内部较实时的每秒执行的命令数 

 

process_id 

redis服务器进程的pid 

 

used_memory_human 

以人类可读的格式返回redis分配的内存总量 

 

used_cpu_sys 

将所有redis主进程在核心态所占用的CPU时求和累计起来 

 

role 

实例的角色,是master or slave 

 

repl_backlog_size 

复制积压缓冲大小 

 

connected_slaves 

连接的slave实例个数 

 

gcc_version 

编译redis时所使用的gcc版本 

 

sync_full 

主从完全同步成功次数 

 

connected_clients 

客户端连接数 

 

used_memory_lua 

lua引擎所使用的内存大小(以字节为单位) 

 

rdb_current_bgsave_time_sec 

如果服务器正在创建rdb文件,那么这个域记录的就是当前的创建操作已经耗费的秒数 

 

aof_pending_bio_fsync 

后台I/O队列里面,等待执行的fsync调用数量 

 

total_net_output_bytes 

redis网络出口流量字节数 

 

pubsub_channels 

当前使用中的频道数量 

 

arch_bits 

架构(32或64位) 

 

rdb_changes_since_last_save 

离最近一次成功生成rdb文件,写入命令的个数,即有多少个写入命令没有持久化 

 

instantaneous_input_kbps 

redis网络入口kps 

 

mem_fragmentation_ratio 

used_memory_rss和used_memory之间的比率,小于1表示使用了swap,大于1表示碎片比较多 

 

aof_last_rewrite_time_sec 

最近一次aof rewrite耗费的时长 

 

used_cpu_sys_children 

将后台进程在核心态所占用的CPU时求和累计起来 

 

aof_rewrite_in_progress 

标识aof的rewrite操作是否在进行中 

 

config_file 

配置文件路径 

 

lru_clock 

自增的时钟,用于LRU管理

该时钟100ms(hz=10,因此每1000ms/10=100ms执行一次定时任务)更新一次 

sync_partial_ok 

主从部分同步成功次数 

 

rdb_last_save_time 

离最近一次成功创建rdb文件的时间戳。当前时间戳 - rdb_last_save_time=多少秒未成功生成rdb文件 

 

pubsub_patterns 

当前使用的模式的数量 

 

redis_git_sha1 

Git SHA1 

 

used_memory_rss 

从操作系统的角度,返回redis已分配的内存总量(俗称常驻集大小)。这个值和top命令的输出一致 

 

rdb_last_bgsave_time_sec 

最近一次成功生成rdb文件耗时秒数 

 

run_id 

redis服务器的随机标识符(用于sentinel和集群) 

 

latest_fork_usec 

最近一次fork操作阻塞redis进程的耗时数,单位微秒 

 

os 

redis服务器的宿主操作系统 

 

slave0 

lag从库多少秒未向主库发送REPLCONF命令 

 

rejected_connections 

拒绝的连接个数,redis连接个数达到maxclients限制,拒绝新连接的个数 

 

total_commands_processed 

redis处理的命令数 

 

expired_keys 

运行以来过期的key的数量 

 

client_longest_output_list 

当前连接的客户端当中,最长的输出列表,用client list命令观察omem字段最大值 

 

used_memory 

由redis分配器分配的内存总量,以字节为单位 

 

aof_rewrite_buffer_length 

aof rewrite buffer的大小 

 

aof_buffer_length 

aof buffer的大小 

 

keyspace_misses 

没命中次数 

 

aof_base_size 

服务器启动时或者aof重写最近一次执行之后aof文件的大小 

 

instantaneous_output_kbps 

redis网络出口kps 

 

used_memory_peak_human 

以人类可读的格式返回redis的内存消耗峰值 

 

keyspace_hits 

命中次数 

 

aof_pending_rewrite 

是否有aof重写操作在等待rdb文件创建完毕之后执行 

 

rdb_bgsave_in_progress 

服务器是否正在创建rdb文件 

 

used_cpu_user_children 

将后台进程在用户态所占用的CPU时求和累计起来 

 

total_connections_received 

新创建连接个数

如果新创建连接过多,过度地创建和销毁连接对性能有影响,说明短连接严重或连接池使用有问题,需调研代码的连接设置 

migrate_cached_sockets 

0

 

用客户端连接redis服务器:  redis-cli >> info  :

  • # Server(服务器信息)
  • redis_version:3.0.0                              #redis服务器版本
  • redis_git_sha1:00000000                  #Git SHA1
  • redis_git_dirty:0                                    #Git dirty flag
  • redis_build_id:6c2c390b97607ff0    #redis build id
  • redis_mode:cluster                              #运行模式,单机或者集群
  • os:Linux 2.6.32-358.2.1.el6.x86_64 x86_64 #redis服务器的宿主操作系统
  • arch_bits:64                                         #架构(32或64位)
  • multiplexing_api:epoll                        #redis所使用的事件处理机制
  • gcc_version:4.4.7                                #编译redis时所使用的gcc版本
  • process_id:12099                               #redis服务器进程的pid
  • run_id:63bcd0e57adb695ff0bf873cf42d403ddbac1565  #redis服务器的随机标识符(用于sentinel和集群)
  • tcp_port:9021                                #redis服务器监听端口
  • uptime_in_seconds:26157730   #redis服务器启动总时间,单位是秒
  • uptime_in_days:302                    #redis服务器启动总时间,单位是天
  • hz:10                                #redis内部调度(进行关闭timeout的客户端,删除过期key等等)频率,程序规定serverCron每秒运行10次。
  • lru_clock:14359959      #自增的时钟,用于LRU管理,该时钟100ms(hz=10,因此每1000ms/10=100ms执行一次定时任务)更新一次。

 

  • # Clients(已连接客户端信息)
  • connected_clients:1081       #已连接客户端的数量(不包括通过slave连接的客户端)
  • client_longest_output_list:0 #当前连接的客户端当中,最长的输出列表,用client list命令观察omem字段最大值
  • client_biggest_input_buf:0   #当前连接的客户端当中,最大输入缓存,用client list命令观察qbuf和qbuf-free两个字段最大值
  • blocked_clients:0                   #正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量

 

  • # Memory(内存信息)
  • used_memory:327494024                 #由redis分配器分配的内存总量,以字节为单位
  • used_memory_human:312.32M       #以人类可读的格式返回redis分配的内存总量
  • used_memory_rss:587247616         #从操作系统的角度,返回redis已分配的内存总量(俗称常驻集大小)。这个值和top命令的输出一致
  • used_memory_peak:1866541112    #redis的内存消耗峰值(以字节为单位) 
  • used_memory_peak_human:1.74G #以人类可读的格式返回redis的内存消耗峰值
  • used_memory_lua:35840                   #lua引擎所使用的内存大小(以字节为单位)
  • mem_fragmentation_ratio:1.79          #used_memory_rss和used_memory之间的比率,小于1表示使用了swap,大于1表示碎片比较多
  • mem_allocator:jemalloc-3.6.0            #在编译时指定的redis所使用的内存分配器。可以是libc、jemalloc或者tcmalloc

在理想情况下, used_memory_rss 的值应该只比used_memory 稍微高一点儿。
当 rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。
内存碎片的比率可以通过 mem_fragmentation_ratio 的值看出。
当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。

Because Redis does not have control over how its allocations are mapped to memory pages, highused_memory_rss is often the result of a spike in memory usage.
当 Redis 释放内存时,分配器可能会,也可能不会,将内存返还给操作系统。
如果 Redis 释放了内存,却没有将内存返还给操作系统,那么 used_memory 的值可能和操作系统显示的 Redis 内存占用并不一致。
查看 used_memory_peak 的值可以验证这种情况是否发生。

 

  • # Persistence(rdb和aof的持久化相关信息)
  • loading:0                                                    #服务器是否正在载入持久化文件
  • rdb_changes_since_last_save:28900855 #离最近一次成功生成rdb文件,写入命令的个数,即有多少个写入命令没有持久化
  • rdb_bgsave_in_progress:0                  #服务器是否正在创建rdb文件
  • rdb_last_save_time:1482358115        #离最近一次成功创建rdb文件的时间戳。当前时间戳 - rdb_last_save_time=多少秒未成功生成rdb文件
  • rdb_last_bgsave_status:ok                   #最近一次rdb持久化是否成功
  • rdb_last_bgsave_time_sec:2                #最近一次成功生成rdb文件耗时秒数
  • rdb_current_bgsave_time_sec:-1        #如果服务器正在创建rdb文件,那么这个域记录的就是当前的创建操作已经耗费的秒数
  • aof_enabled:1                                          #是否开启了aof
  • aof_rewrite_in_progress:0                     #标识aof的rewrite操作是否在进行中
  • aof_rewrite_scheduled:0              

#rewrite任务计划,当客户端发送bgrewriteaof指令,如果当前rewrite子进程正在执行,那么将客户端请求的bgrewriteaof变为计划任务,待aof子进程结束后执行rewrite 

  • aof_last_rewrite_time_sec:-1            #最近一次aof rewrite耗费的时长
  • aof_current_rewrite_time_sec:-1      #如果rewrite操作正在进行,则记录所使用的时间,单位秒
  • aof_last_bgrewrite_status:ok             #上次bgrewriteaof操作的状态
  • aof_last_write_status:ok                     #上次aof写入状态
  • aof_current_size:4201740                 #aof当前尺寸
  • aof_base_size:4201687                    #服务器启动时或者aof重写最近一次执行之后aof文件的大小
  • aof_pending_rewrite:0                       #是否有aof重写操作在等待rdb文件创建完毕之后执行?
  • aof_buffer_length:0                             #aof buffer的大小
  • aof_rewrite_buffer_length:0              #aof rewrite buffer的大小
  • aof_pending_bio_fsync:0                  #后台I/O队列里面,等待执行的fsync调用数量
  • aof_delayed_fsync:0                          #被延迟的fsync调用数量

 

  • # Stats(一般统计信息)
  • total_connections_received:209561105 #新创建连接个数,如果新创建连接过多,过度地创建和销毁连接对性能有影响,说明短连接严重或连接池使用有问题,需调研代码的连接设置
  • total_commands_processed:2220123478  #redis处理的命令数
  • instantaneous_ops_per_sec:279                  #redis当前的qps,redis内部较实时的每秒执行的命令数
  • total_net_input_bytes:118515678789          #redis网络入口流量字节数
  • total_net_output_bytes:236361651271       #redis网络出口流量字节数
  • instantaneous_input_kbps:13.56                  #redis网络入口kps
  • instantaneous_output_kbps:31.33               #redis网络出口kps
  • rejected_connections:0                                   #拒绝的连接个数,redis连接个数达到maxclients限制,拒绝新连接的个数
  • sync_full:1                                                          #主从完全同步成功次数
  • sync_partial_ok:0                                             #主从部分同步成功次数
  • sync_partial_err:0                                            #主从部分同步失败次数
  • expired_keys:15598177                                #运行以来过期的key的数量
  • evicted_keys:0                                                 #运行以来剔除(超过了maxmemory后)的key的数量
  • keyspace_hits:1122202228                          #命中次数
  • keyspace_misses:577781396                     #没命中次数
  • pubsub_channels:0                                       #当前使用中的频道数量
  • pubsub_patterns:0                                         #当前使用的模式的数量
  • latest_fork_usec:15679                                 #最近一次fork操作阻塞redis进程的耗时数,单位微秒
  • migrate_cached_sockets:0                          #

 

  • # Replication(主从信息,master上显示的信息)
  • role:master                               #实例的角色,是master or slave
  • connected_slaves:1              #连接的slave实例个数
  • slave0:ip=192.168.64.104,port=9021,state=online,offset=6713173004,lag=0 #lag从库多少秒未向主库发送REPLCONF命令
  • master_repl_offset:6713173145  #主从同步偏移量,此值如果和上面的offset相同说明主从一致没延迟
  • repl_backlog_active:1                   #复制积压缓冲区是否开启
  • repl_backlog_size:134217728    #复制积压缓冲大小
  • repl_backlog_first_byte_offset:6578955418  #复制缓冲区里偏移量的大小
  • repl_backlog_histlen:134217728   #此值等于 master_repl_offset - repl_backlog_first_byte_offset,该值不会超过repl_backlog_size的大小

 

  • # Replication(主从信息,slave上显示的信息)
  • role:slave                                        #实例的角色,是master or slave
  • master_host:192.168.64.102       #此节点对应的master的ip
  • master_port:9021                          #此节点对应的master的port
  • master_link_status:up                   #slave端可查看它与master之间同步状态,当复制断开后表示down
  • master_last_io_seconds_ago:0  #主库多少秒未发送数据到从库?
  • master_sync_in_progress:0        #从服务器是否在与主服务器进行同步
  • slave_repl_offset:6713173818   #slave复制偏移量
  • slave_priority:100                          #slave优先级
  • slave_read_only:1                         #从库是否设置只读
  • connected_slaves:0                      #连接的slave实例个数
  • master_repl_offset:0         
  • repl_backlog_active:0                  #复制积压缓冲区是否开启
  • repl_backlog_size:134217728   #复制积压缓冲大小
  • repl_backlog_first_byte_offset:0 #复制缓冲区里偏移量的大小
  • repl_backlog_histlen:0           #此值等于 master_repl_offset - repl_backlog_first_byte_offset,该值不会超过repl_backlog_size的大小

 

  • # CPU(CPU计算量统计信息)
  • used_cpu_sys:96894.66             #将所有redis主进程在核心态所占用的CPU时求和累计起来
  • used_cpu_user:87397.39           #将所有redis主进程在用户态所占用的CPU时求和累计起来
  • used_cpu_sys_children:6.37     #将后台进程在核心态所占用的CPU时求和累计起来
  • used_cpu_user_children:52.83 #将后台进程在用户态所占用的CPU时求和累计起来

 

  • # Commandstats(各种不同类型的命令的执行统计信息)
  • cmdstat_get:calls=1664657469,usec=8266063320,usec_per_call=4.97  

#call每个命令执行次数,usec总共消耗的CPU时长(单位微秒),平均每次消耗的CPU时长(单位微秒)

 

  • # Cluster(集群相关信息)
  • cluster_enabled:1   #实例是否启用集群模式

 

  • # Keyspace(数据库相关的统计信息)
  • db0:keys=194690,expires=191702,avg_ttl=3607772262 #db0的key的数量,以及带有生存期的key的数,平均存活时间

 

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

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

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

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

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