原文鏈接:http://my.oschina.net/tongyufu/blog/405612
redis-cli連接服務器后,使用info命令查看Redis信息和狀態:
其中memory段顯示了redis的內存使用狀態。
INFO
INFO [section]
以一種易於解釋(parse)且易於閱讀的格式,返回關於 Redis 服務器的各種信息和統計數值。
通過給定可選的參數 section
,可以讓命令只返回某一部分的信息:
-
server
部分記錄了 Redis 服務器的信息,它包含以下域:redis_version
: Redis 服務器版本redis_git_sha1
: Git SHA1redis_git_dirty
: Git dirty flagos
: Redis 服務器的宿主操作系統arch_bits
: 架構(32 或 64 位)multiplexing_api
: Redis 所使用的事件處理機制gcc_version
: 編譯 Redis 時所使用的 GCC 版本process_id
: 服務器進程的 PIDrun_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
: 由 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 。
在理想情況下,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
的值可以驗證這種情況是否發生。 -
persistence
部分記錄了跟RDB
持久化和AOF
持久化有關的信息,它包含以下域: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 文件的結果是成功還是失敗。
如果 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
調用數量。
-
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
: 主/從復制信息role
: 如果當前服務器沒有在復制任何其他服務器,那么這個域的值就是master
;否則的話,這個域的值就是slave
。注意,在創建復制鏈的時候,一個從服務器也可能是另一個服務器的主服務器。
如果當前服務器是一個從服務器的話,那么這個部分還會加上以下域:
master_host
: 主服務器的 IP 地址。master_port
: 主服務器的 TCP 監聽端口號。master_link_status
: 復制連接當前的狀態,up
表示連接正常,down
表示連接斷開。master_last_io_seconds_ago
: 距離最近一次與主服務器進行通信已經過去了多少秒鍾。master_sync_in_progress
: 一個標志值,記錄了主服務器是否正在與這個從服務器進行同步。
如果同步操作正在進行,那么這個部分還會加上以下域:
master_sync_left_bytes
: 距離同步完成還缺少多少字節數據。master_sync_last_io_seconds_ago
: 距離最近一次因為 SYNC 操作而進行 I/O 已經過去了多少秒。
如果主從服務器之間的連接處於斷線狀態,那么這個部分還會加上以下域:
master_link_down_since_seconds
: 主從服務器連接斷開了多少秒。
以下是一些總會出現的域:
connected_slaves
: 已連接的從服務器數量。
對於每個從服務器,都會添加以下一行信息:
slaveXXX
: ID、IP 地址、端口號、連接狀態
-
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
作為默認參數。
- 可用版本:
- >= 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