轉自:http://my.oschina.net/tongyufu/blog/405612
redis-cli連接服務器后,使用info命令查看Redis信息和狀態:
INFO [section]
以一種易於解釋(parse)且易於閱讀的格式,返回關於 Redis 服務器的各種信息和統計數值。
通過給定可選的參數 section
,可以讓命令只返回某一部分的信息:
-
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 管理 -
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)
-
返回值:
-
具體請參見下面的測試代碼。
1 # Server 2 redis_version:2.8.4 3 redis_git_sha1:00000000 4 redis_git_dirty:0 5 redis_build_id:8f6097d7914679ca 6 redis_mode:standalone 7 os:Linux 3.13.0-37-generic i686 8 arch_bits:32 9 multiplexing_api:epoll 10 gcc_version:4.8.2 11 process_id:1380 12 run_id:c57b3c410a00d9a7ee3b2cf9eb72479d8097f328 13 tcp_port:6379 14 uptime_in_seconds:30905 15 uptime_in_days:0 16 hz:10 17 lru_clock:520960 18 config_file:/etc/redis/redis.conf 19 20 # Clients 21 connected_clients:1 22 client_longest_output_list:0 23 client_biggest_input_buf:0 24 blocked_clients:0 25 26 # Memory 27 used_memory:423880 28 used_memory_human:413.95K 29 used_memory_rss:7495680 30 used_memory_peak:386096 31 used_memory_peak_human:377.05K 32 used_memory_lua:22528 33 mem_fragmentation_ratio:17.68 34 mem_allocator:jemalloc-3.4.1 35 36 # Persistence 37 loading:0 38 rdb_changes_since_last_save:0 39 rdb_bgsave_in_progress:0 40 rdb_last_save_time:1452244404 41 rdb_last_bgsave_status:ok 42 rdb_last_bgsave_time_sec:0 43 rdb_current_bgsave_time_sec:-1 44 aof_enabled:0 45 aof_rewrite_in_progress:0 46 aof_rewrite_scheduled:0 47 aof_last_rewrite_time_sec:-1 48 aof_current_rewrite_time_sec:-1 49 aof_last_bgrewrite_status:ok 50 51 # Stats 52 total_connections_received:3 53 total_commands_processed:2 54 instantaneous_ops_per_sec:0 55 rejected_connections:0 56 sync_full:0 57 sync_partial_ok:0 58 sync_partial_err:0 59 expired_keys:0 60 evicted_keys:0 61 keyspace_hits:1 62 keyspace_misses:0 63 pubsub_channels:0 64 pubsub_patterns:0 65 latest_fork_usec:984 66 67 # Replication 68 role:master 69 connected_slaves:0 70 master_repl_offset:0 71 repl_backlog_active:0 72 repl_backlog_size:1048576 73 repl_backlog_first_byte_offset:0 74 repl_backlog_histlen:0 75 76 # CPU 77 used_cpu_sys:2.31 78 used_cpu_user:3.26 79 used_cpu_sys_children:0.00 80 used_cpu_user_children:0.00 81 82 # Keyspace 83 db0:keys=1,expires=0,avg_ttl=0