Redis的info参数简介

本文介绍了如何使用Redis的info命令获取服务器状态信息,并详细解释了各部分数据的意义,包括Server、Clients、Memory等关键部分。

通过info信息,可以看到redis的一些详细情况,后续的redis监控,也是基于这个info信息。

通过给定可选的参数section,可以让命令只返回某一部分的信息:

 

Server部分记录了Redis服务器的信息,它包含以下域:

redis_version : 2.8.19                              # Redis服务器版本

redis_git_sha100000000                         #Git  SHA1

redis_git_dirty: 0                                 #Git dirty flag

os:  Linux 3.2.0-23-generic x86_64                  #Redis服务器的宿主操作系统

arch_bits: 64                                    #服务器系统架构(32位或64位)

multiplexing_api: epoll                            #Redis使用的事件处理机制

gcc_version:4.6.3                                 #编译Redis时所使用的GCC版本

process_id:7573                                  #Redis服务的进程PID

run_id:f1c233c4194cba88616c5bfff2d97fc3074865c1    #Redis服务器的随机标识符(用于Sentinel和集群)

tcp_port:6379                                    #Redis服务监听的TCP端口

uptime_in_seconds:7976                           #Redis服务器启动以来,经过的秒数

uptime_in_days:0                 #Redis服务器启动以来,经过的天数. 这里还不到1天,故显示为0

hz:10                           # Redis调用内部函数来执行许多后台任务的频率为每秒10   

lru_clock:1133773                 #以分钟为单位进行自增的时钟,用于LRU管理

config_file:/data/redis_6379/redis.conf  #redis.conf配置文件所在路径

 

Clients部分记录了已连接客户端的信息,它包含以下域:

connected_clients:2                #已连接客户端的数量(不包括通过从服务器连接的客户端)

client_longest_output_list:0         #当前的客户端连接中,最长的输出列表

client_biggest_input_buf:0          #当前连接的客户端中,最大的输入缓存

blocked_clients:0                  #正在等待阻塞命令(BLOPBRPOPBRPOPLPUSH)的客户端的数量

 

Memory部分记录了服务器的内存信息,它包含以下域:

used_memory:894216            #Redis分配器分配给Redis的内存。例如,当Redis增加了存储数据时,需要的内存直接从分配器分配给它的内存里面取就可以了,也就是直接从used_memory取。而Redis分配器分配给Redis的内存,是从操作系统分配给Redis的内存里面取的(单位是字节)

used_memory_human:873.26K     #以人类可读格式显示Redis消耗的内存

used_memory_rss:2691072        #操作系统分配给Redis的内存。也就是Redis占用的内存大小。这个值和top指令输出的RES列结果是一样的。RES列结果就表示Redis进程真正使用的物理内存(单位是字节)

used_memory_peak:914160        #Redis的内存消耗峰值(单位是字节)

used_memory_peak_human:892.73K  #以人类可读的格式返回Redis的内存消耗峰值

used_memory_lua:35840           #Lua引擎所使用的内存大小(单位是字节)

mem_fragmentation_ratio:3.01      # used_memory_rssused_memory之间的比率

mem_allocator:jemalloc-3.6.0       #在编译时指定的,Redis所使用的内存分配器。可以是libcjemalloc或者tcmalloc

 

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

rss >used,且两者的值相差较大时,表示存在(内部或者外部的)内存碎片。内存碎片的比率可以通过mem_fragmentation_ratio的值看出;

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

 

Persistence部分记录了RDB持久化和AOF持久化有关的信息,它包含以下域:

loading:0           #一个标志值,记录了服务器是否正在载入持久化文件

rdb_changes_since_last_save:0  #距离最后一次成功创建持久化文件之后,改变了多少个键值

rdb_bgsave_in_progress:0       #一个标志值,记录服务器是否正在创建RDB文件

rdb_last_save_time:1427189587  #最近一次成功创建RDB文件的UNIX时间戳

rdb_last_bgsave_status:ok       #一个标志值,记录了最后一次创建RDB文件的结果是成功还是失败

rdb_last_bgsave_time_sec:0     #记录最后一次创建RDB文件耗费的秒数

rdb_current_bgsave_time_sec:-1  #如果服务器正在创建RDB文件,那么这个值记录的就是当前的创建RDB操作已经耗费了多长时间(单位为秒)

aof_enabled:0  #一个标志值,记录了AOF是否处于打开状态

aof_rewrite_in_progress:0  #一个标志值,记录了服务器是否正在创建AOF文件

aof_rewrite_scheduled:0   #一个标志值,记录了RDB文件创建完之后,是否需要执行预约的AOF重写操作

aof_last_rewrite_time_sec:-1     #记录了最后一次AOF重写操作的耗时

aof_current_rewrite_time_sec:-1  #如果服务器正在进行AOF重写操作,那么这个值记录的就是当前重写操作已经耗费的时间(单位是秒)

aof_last_bgrewrite_status:ok   #一个标志值,记录了最后一次重写AOF文件的结果是成功还是失败

 

如果AOF持久化功能处于开启状态,那么在Persistence部分还会加上以下域:

aof_current_size:14301     #AOF文件目前的大小

aof_base_size:14301       #服务器启动时或者最近一次执行AOF重写之后,AOF文件的大小

aof_pending_rewrite:0     #一个标志值,记录了是否有AOF重写操作在等待RDB文件创建完之后执行

aof_buffer_length:0       # AOF缓冲区的大小

aof_rewrite_buffer_length:0  #AOF重写缓冲区的大小

aof_pending_bio_fsync:0    #在后台I/0队列里面,等待执行的fsync数量

aof_delayed_fsync:0        #被延迟执行的fsync数量

 

Stats部分记录了一般的统计信息,它包含以下域:

total_connections_received:8   #服务器已经接受的连接请求数量

total_commands_processed:10673  #服务器已经执行的命令数量

instantaneous_ops_per_sec:0   #服务器每秒中执行的命令数量

rejected_connections:0        #因为最大客户端数量限制而被拒绝的连接请求数量

expired_keys:0               #因为过期而被自动删除的数据库键数量

evicted_keys:0               #因为最大内存容量限制而被驱逐(evict)的键数量

keyspace_hits:1              #查找数据库键成功的次数

keyspace_misses:0           #查找数据库键失败的次数

pubsub_channels:0           #目前被订阅的频道数量

pubsub_patterns:0           #目前被订阅的模式数量

latest_fork_usec:159          #最近一次fork()操作耗费的时间(毫秒)

 

Replication部分记录了主从复制的信息

role:master                 #在主从复制中,充当的角色。如果没有主从复制,单点的,它充当的角色也是master

connected_slaves:1           #有一个slave连接上来

slave0:ip=14.17.119.220,port=6379,state=online,offset=718446,lag=0  #slaveIP、端口、状态等

 

如果当前服务器是从服务器的话,那么这个部分还会加上以下域:

l   master_host :主服务器的IP地址

l   master_port:主服务器监听的端口号

l   master_link_status:复制连接当前的状态,up表示连接正常,down表示连接断开

l   master_last_io_seconds_ago:距离最近一次与主服务器进行通信已经过去了多少秒

l   master_sync_in_progress:一个标志值,记录了主服务器是否正在与这个从服务器进行同步

 

如果同步操作正在进行,那么这个部分还会加上以下域:

l   master_sync_left_bytes:距离同步完成还缺多少字节的数据

l   master_sync_last_io_seconds_ago: 距离最近一次与主服务器进行通信已经过去了多少秒

 

如果主从服务器之间的连接处于断线状态,那么这个部分还会加上以下域:

l   master_link_down_since_seconds: 主从服务器连接断开了多少秒

 

cpu部分记录了CPU的计算量统计信息,它包含以下域:

l   used_cpu_sys:75.46   #Redis服务器耗费的系统CPU

l   used_cpu_user:90.12  #Redis服务器耗费的用户CPU

l   used_cpu_sys_children:0.00  #Redis后台进程耗费的系统CPU

l   used_cpu_user_children:0.00  #Redis后台进程耗费的用户CPU

 

Keyspace部分记录了数据库相关的统计信息,如数据库的键数量、数据库已经被删除的过期键数量。对于每个数据库,这个部分会添加一行以下格式的信息:

db0:keys=25,expires=0,avg_ttl=0   #0号数据库有25个键、已经被删除的过期键数量为0

要获取 Redis 服务器的运行状态和配置信息,可以使用 `INFO` 命令。该命令返回关于 Redis 实例的详细信息,包括服务器配置、客户端连接状态、内存使用情况、持久化状态、复制信息、键空间统计等。 ### 使用方式 `INFO` 命令可以单独使用,也可以带上可选的参数来获取特定部分的信息。语法如下: ``` INFO [section] ``` 其中 `section` 是可选参数,用于指定需要查询的信息类别。如果省略 `section`,则返回所有信息。 常用 `section` 参数包括: - `server`:显示 Redis 服务器的基本信息,如版本、运行模式、端口等。 - `clients`:显示客户端连接的状态信息,包括连接数、阻塞客户端数量等。 - `memory`:显示内存相关的统计信息,如已使用内存、内存限制、内存分配器等。 - `persistence`:显示持久化相关的状态,如 RDB 和 AOF 的状态、文件创建时间等。 - `stats`:显示通用统计信息,如处理的命令数量、连接数、过期键的数量等。 - `replication`:显示主从复制相关的信息,如主节点和从节点的状态、偏移量等。 - `cpu`:显示 CPU 使用情况。 - `cluster`:显示 Redis 集群的配置信息。 - `keyspace`:显示每个数据库的键数量和过期键数量。 ### 示例输出解释 以下是一个 `INFO` 命令的部分输出示例及其解释: ```plaintext # Server redis_version:7.0.5 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:abc1234567890 redis_mode:standalone os:Linux 5.4.0-122-generic x86_64 arch_bits:64 multiplexing_api:epoll atomicapi:atomic-builtin gcc_version:9.4.0 process_id:1234 run_id:abcd1234-5678-90ef-ghij-klmnopqrstuv tcp_port:6379 uptime_in_days:10 uptime_in_seconds:864000 hz:10 configured_hz:10 lru_clock:123456 executable:/usr/local/bin/redis-server config_file:/etc/redis/redis.conf io_threads_active:0 ``` - `redis_version`: Redis 服务器版本。 - `redis_mode`: Redis 运行模式(如 `standalone` 表示单机模式)。 - `os`: 操作系统类型和内核版本。 - `arch_bits`: 架构位数(如 `64` 表示 64 位系统)。 - `tcp_port`: Redis 服务器监听的 TCP 端口号。 - `uptime_in_days`: Redis 服务器已运行的天数。 - `uptime_in_seconds`: Redis 服务器已运行的秒数。 - `hz`: Redis 内部时钟频率。 ```plaintext # Memory used_memory:1048576 used_memory_human:1.00M used_memory_rss:2097152 used_memory_rss_human:2.00M used_memory_peak:2097152 used_memory_peak_human:2.00M used_memory_max:2097152 used_memory_max_human:2.00M ``` - `used_memory`: Redis 当前使用的内存量(以字节为单位)。 - `used_memory_human`: 人类可读格式的内存使用量。 - `used_memory_rss`: Redis 进程占用的操作系统内存总量。 - `used_memory_peak`: Redis 使用内存的峰值。 - `used_memory_max`: Redis 配置的最大内存限制。 ```plaintext # Clients connected_clients:10 client_recent_max_input_buffer:256 client_recent_max_output_buffer:1024 blocked_clients:0 ``` - `connected_clients`: 当前连接的客户端数量。 - `blocked_clients`: 当前被阻塞的客户端数量(例如在 `BLPOP` 命令中等待)。 ```plaintext # Persistence rdb_bgsave_in_progress:0 rdb_last_save_time:1630000000 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:10 rdb_current_bgsave_time_sec:-1 aof_enabled:1 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 ``` - `rdb_bgsave_in_progress`: 是否有 RDB 快照正在生成。 - `rdb_last_save_time`: 上次保存 RDB 快照的时间戳。 - `aof_enabled`: 是否启用 AOF 持久化(`1` 表示启用)。 ```plaintext # Stats total_connections_received:1000 total_commands_processed:5000 instantaneous_ops_per_sec:5 rejected_connections:0 expired_keys:200 evicted_keys:0 keyspace_hits:300 keyspace_misses:50 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:1000 ``` - `total_connections_received`: 接收的总连接数。 - `total_commands_processed`: 处理的总命令数。 - `instantaneous_ops_per_sec`: 每秒处理的命令数。 - `expired_keys`: 过期的键数量。 - `keyspace_hits`: 成功查找键的次数。 - `keyspace_misses`: 查找键失败的次数。 ```plaintext # Replication role:master connected_slaves:2 slave0:ip=192.168.1.2,port=6379,state=online,offset=123456789,lag=1 slave1:ip=192.168.1.3,port=6379,state=online,offset=123456789,lag=0 ``` - `role`: 当前实例的角色(`master` 或 `slave`)。 - `connected_slaves`: 连接的从节点数量。 - `slaveX`: 从节点的详细信息,包括 IP、端口、状态、同步偏移量和延迟。 ### 总结 `INFO` 命令是监控 Redis 运行状态和配置的重要工具,可以帮助运维人员快速了解 Redis 实例的健康状况、资源使用情况以及性能指标。通过指定不同的 `section` 参数,可以精确地获取所需信息,适用于日常维护、性能调优和故障排查等场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值