INFO [section]html
以一種易於解釋(parse)且易於閱讀的格式,返回關於 Redis 服務器的各類信息和統計數值。git
經過給定可選的參數 section
,可讓命令只返回某一部分的信息:redis
server
部分記錄了 Redis 服務器的信息,它包含如下域:數據庫
redis_version
: Redis 服務器版本api
redis_git_sha1
: Git SHA1緩存
redis_git_dirty
: Git dirty flag服務器
os
: Redis 服務器的宿主操做系統架構
arch_bits
: 架構(32 或 64 位)app
multiplexing_api
: Redis 所使用的事件處理機制socket
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 管理
clients
部分記錄了已鏈接客戶端的信息,它包含如下域:
connected_clients
: 已鏈接客戶端的數量(不包括經過從屬服務器鏈接的客戶端)
client_longest_output_list
: 當前鏈接的客戶端當中,最長的輸出列表
client_longest_input_buf
: 當前鏈接的客戶端當中,最大輸入緩存
blocked_clients
: 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客戶端的數量
memory
部分記錄了服務器的內存信息,它包含如下域:
在理想狀況下,
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, high
used_memory_rss
is often the result of a spike in memory usage.當 Redis 釋放內存時,分配器可能會,也可能不會,將內存返還給操做系統。
若是 Redis 釋放了內存,卻沒有將內存返還給操做系統,那麼
used_memory
的值可能和操做系統顯示的 Redis 內存佔用並不一致。查看
used_memory_peak
的值能夠驗證這種狀況是否發生。
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_lua
: Lua 引擎所使用的內存大小(以字節爲單位)
mem_fragmentation_ratio
: used_memory_rss
和 used_memory
之間的比率
mem_allocator
: 在編譯時指定的, Redis 所使用的內存分配器。能夠是 libc 、 jemalloc 或者 tcmalloc 。
persistence
部分記錄了跟 RDB
持久化和 AOF
持久化有關的信息,它包含如下域:
若是 AOF 持久化功能處於開啓狀態,那麼這個部分還會加上如下域:
aof_current_size
: AOF 文件目前的大小。
aof_base_size
: 服務器啓動時或者 AOF 重寫最近一次執行以後,AOF 文件的大小。
aof_pending_rewrite
: 一個標誌值,記錄了是否有 AOF 重寫操做在等待 RDB 文件建立完畢以後執行。
aof_buffer_length
: AOF 緩衝區的大小。
aof_rewrite_buffer_length
: AOF 重寫緩衝區的大小。
aof_pending_bio_fsync
: 後臺 I/O 隊列裏面,等待執行的 fsync
調用數量。
aof_delayed_fsync
: 被延遲的 fsync
調用數量。
loading
: 一個標誌值,記錄了服務器是否正在載入持久化文件。
rdb_changes_since_last_save
: 距離最近一次成功建立持久化文件以後,通過了多少秒。
rdb_bgsave_in_progress
: 一個標誌值,記錄了服務器是否正在建立 RDB 文件。
rdb_last_save_time
: 最近一次成功建立 RDB 文件的 UNIX 時間戳。
rdb_last_bgsave_status
: 一個標誌值,記錄了最近一次建立 RDB 文件的結果是成功仍是失敗。
rdb_last_bgsave_time_sec
: 記錄了最近一次建立 RDB 文件耗費的秒數。
rdb_current_bgsave_time_sec
: 若是服務器正在建立 RDB 文件,那麼這個域記錄的就是當前的建立操做已經耗費的秒數。
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 文件的結果是成功仍是失敗。
stats
部分記錄了通常統計信息,它包含如下域:
total_connections_received
: 服務器已接受的鏈接請求數量。
total_commands_processed
: 服務器已執行的命令數量。
instantaneous_ops_per_sec
: 服務器每秒鐘執行的命令數量。
rejected_connections
: 由於最大客戶端數量限制而被拒絕的鏈接請求數量。
expired_keys
: 由於過時而被自動刪除的數據庫鍵數量。
evicted_keys
: 由於最大內存容量限制而被驅逐(evict)的鍵數量。
keyspace_hits
: 查找數據庫鍵成功的次數。
keyspace_misses
: 查找數據庫鍵失敗的次數。
pubsub_channels
: 目前被訂閱的頻道數量。
pubsub_patterns
: 目前被訂閱的模式數量。
latest_fork_usec
: 最近一次 fork()
操做耗費的毫秒數。
replication
: 主/從複製信息
若是當前服務器是一個從服務器的話,那麼這個部分還會加上如下域:
若是同步操做正在進行,那麼這個部分還會加上如下域:
若是主從服務器之間的鏈接處於斷線狀態,那麼這個部分還會加上如下域:
如下是一些總會出現的域:
對於每一個從服務器,都會添加如下一行信息:
slaveXXX
: ID、IP 地址、端口號、鏈接狀態
connected_slaves
: 已鏈接的從服務器數量。
master_link_down_since_seconds
: 主從服務器鏈接斷開了多少秒。
master_sync_left_bytes
: 距離同步完成還缺乏多少字節數據。
master_sync_last_io_seconds_ago
: 距離最近一次由於 SYNC 操做而進行 I/O 已通過去了多少秒。
master_host
: 主服務器的 IP 地址。
master_port
: 主服務器的 TCP 監聽端口號。
master_link_status
: 複製鏈接當前的狀態, up
表示鏈接正常, down
表示鏈接斷開。
master_last_io_seconds_ago
: 距離最近一次與主服務器進行通訊已通過去了多少秒鐘。
master_sync_in_progress
: 一個標誌值,記錄了主服務器是否正在與這個從服務器進行同步。
role
: 若是當前服務器沒有在複製任何其餘服務器,那麼這個域的值就是 master
;不然的話,這個域的值就是slave
。注意,在建立複製鏈的時候,一個從服務器也多是另外一個服務器的主服務器。
cpu
部分記錄了 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,usecpercall=XXX
cluster
部分記錄了和集羣有關的信息,它包含如下域:
cluster_enabled
: 一個標誌值,記錄集羣功能是否已經開啓。
keyspace
部分記錄了數據庫相關的統計信息,好比數據庫的鍵數量、數據庫已經被刪除的過時鍵數量等。對於每一個數據庫,這個部分都會添加一行如下格式的信息:
dbXXX:keys=XXX,expires=XXX
除上面給出的這些值之外, section
參數的值還能夠是下面這兩個:
all
: 返回全部信息
default
: 返回默認選擇的信息
當不帶參數直接調用 INFO 命令時,使用 default
做爲默認參數。
不一樣版本的 Redis 可能對返回的一些域進行了增長或刪減。
所以,一個健壯的客戶端程序在對 INFO 命令的輸出進行分析時,應該可以跳過不認識的域,而且妥善地處理丟失不見的域。
可用版本:
>= 1.0.0
時間複雜度:
O(1)
返回值:
具體請參見下面的測試代碼。
redis> INFO # Server redis_version:2.9.11 redis_git_sha1:937384d0 redis_git_dirty:0 redis_build_id:8e9509442863f22 redis_mode:standalone os:Linux 3.13.0-35-generic x86_64 arch_bits:64 multiplexing_api:epoll gcc_version:4.8.2 process_id:4716 run_id:26186aac3f2380aaee9eef21cc50aecd542d97dc tcp_port:6379 uptime_in_seconds:362 uptime_in_days:0 hz:10 lru_clock:1725349 config_file: # Clients connected_clients:1 client_longest_output_list:0 client_biggest_input_buf:0 blocked_clients:0 # Memory used_memory:508536 used_memory_human:496.62K used_memory_rss:7974912 used_memory_peak:508536 used_memory_peak_human:496.62K used_memory_lua:33792 mem_fragmentation_ratio:15.68 mem_allocator:jemalloc-3.2.0 # Persistence loading:0 rdb_changes_since_last_save:6 rdb_bgsave_in_progress:0 rdb_last_save_time:1411011131 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:-1 rdb_current_bgsave_time_sec:-1 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 # Stats total_connections_received:2 total_commands_processed:4 instantaneous_ops_per_sec:0 rejected_connections:0 sync_full:0 sync_partial_ok:0 sync_partial_err:0 expired_keys:0 evicted_keys:0 keyspace_hits:0 keyspace_misses:0 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:0 migrate_cached_sockets:0 # Replication role:master connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 # CPU used_cpu_sys:0.21 used_cpu_user:0.17 used_cpu_sys_children:0.00 used_cpu_user_children:0.00 # Cluster cluster_enabled:0 # Keyspace db0:keys=2,expires=0,avg_ttl=0