1、前言
Redis 是一個(gè)高性能的鍵值存儲(chǔ)系統(tǒng),已經(jīng)成為了很多互聯(lián)網(wǎng)企業(yè)的首選。在 Redis 中,通過執(zhí)行 INFO 命令可以獲取到 Redis 實(shí)例的各種信息和統(tǒng)計(jì)數(shù)據(jù),這些數(shù)據(jù)對(duì)于運(yùn)維和開發(fā)人員來說都是非常重要的。
隨著 Redis 的廣泛應(yīng)用和深入學(xué)習(xí),了解 Redis INFO 命令的參數(shù)和輸出內(nèi)容將變得越來越重要。在本文中,我們將詳細(xì)介紹 Redis INFO 命令的各個(gè)參數(shù),包括它們所表示的意義、輸出的數(shù)據(jù)格式以及如何使用這些信息來監(jiān)控和優(yōu)化 Redis 實(shí)例的性能。
Redis 的 info 命令參數(shù)的官方文檔鏈接
2、INFO 命令參數(shù)
INFO 命令以一種計(jì)算機(jī)易于解析、人類易于閱讀的格式返回有關(guān)服務(wù)器的信息和統(tǒng)計(jì)信息。
可選參數(shù)可以用于選擇特定的信息部分:
- server: Redis服務(wù)器的通用信息
- clients: 客戶端連接部分
- memory: 與內(nèi)存消耗相關(guān)的信息
- persistence: RDB和AOF相關(guān)的信息
- stats: Redis服務(wù)器的一般統(tǒng)計(jì)信息
- replication: 主/從復(fù)制信息
- cpu: CPU使用統(tǒng)計(jì)信息
- commandstats: Redis命令統(tǒng)計(jì)信息
- latencystats: Redis命令延遲百分位數(shù)分布統(tǒng)計(jì)信息
- sentinel: Redis Sentinel部分(僅適用于Sentinel實(shí)例)
- cluster: Redis Cluster部分
- modules: 模塊部分
- keyspace: 與數(shù)據(jù)庫(kù)相關(guān)的統(tǒng)計(jì)信息
- modules: 模塊相關(guān)部分
- errorstats: Redis錯(cuò)誤統(tǒng)計(jì)信息
3、Spring Boot 項(xiàng)目簡(jiǎn)單示例
首先,在Spring Boot項(xiàng)目中添加以下依賴項(xiàng):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
然后,在應(yīng)用程序配置文件(application.properties或application.yml)中配置Redis連接:
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=your_password
接下來,我們可以在應(yīng)用程序中使用 RedisTemplate 來執(zhí)行 Redis 命令。以下是一個(gè)簡(jiǎn)單的示例:
@RestController
@RequestMapping("/redis")
public class RedisController {
@Autowired
private RedisTemplate<String, String> redisTemplate;
@GetMapping("/info")
public String getInfo() {
Properties info = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info());
return info.toString();
}
}
在上面的示例中,我們注入了一個(gè) RedisTemplate 實(shí)例,并在 GET 請(qǐng)求處理方法中使用該實(shí)例執(zhí)行 Redis INFO 命令。我們將結(jié)果作為 Properties 對(duì)象返回,這可以方便地轉(zhuǎn)換為 JSON 字符串或其他格式。
最后,我們可以通過訪問 http://localhost:8080/redis/info 來獲取 Redis 服務(wù)器的信息。
需要注意的是,由于 INFO 命令返回的信息非常詳細(xì),因此在生產(chǎn)環(huán)境中最好不要使用此方法。相反,應(yīng)該使用專業(yè)的監(jiān)控工具來監(jiān)控 Redis 服務(wù)器的性能和狀態(tài)。
4、返回值參數(shù)說明
請(qǐng)注意,根據(jù) Redis 的版本,某些字段可能已添加或刪除。因此,健壯的客戶端應(yīng)用程序應(yīng)通過跳過未知屬性來解析此命令的結(jié)果,并優(yōu)雅地處理缺失字段。
4.1、命令及返回信息示例
redis> INFO
"# Server
redis_version:7.0.10
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:de582ff341d0b85c
redis_mode:standalone
os:Linux 5.15.0-1015-aws x86_64
arch_bits:64
monotonic_clock:POSIX clock_gettime
multiplexing_api:epoll
atomicvar_api:c11-builtin
gcc_version:10.2.1
process_id:1
process_supervised:no
run_id:9df984d51c0472627f699ca291c42a415c8ea4b9
tcp_port:6379
server_time_usec:1679898621742431
uptime_in_seconds:565125
uptime_in_days:6
hz:10
configured_hz:10
lru_clock:2177021
executable:/data/redis-server
config_file:/etc/redis/redis.conf
io_threads_active:0
# Clients
connected_clients:2
cluster_connections:0
maxclients:10000
client_recent_max_input_buffer:20480
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0
# Memory
used_memory:43818096
used_memory_human:41.79M
used_memory_rss:50896896
used_memory_rss_human:48.54M
used_memory_peak:43831488
used_memory_peak_human:41.80M
used_memory_peak_perc:99.97%
used_memory_overhead:12362920
used_memory_startup:862912
used_memory_dataset:31455176
used_memory_dataset_perc:73.23%
allocator_allocated:43909712
allocator_active:44888064
allocator_resident:48369664
total_system_memory:16585551872
total_system_memory_human:15.45G
used_memory_lua:31744
used_memory_vm_eval:31744
used_memory_lua_human:31.00K
used_memory_scripts_eval:0
number_of_cached_scripts:0
number_of_functions:0
number_of_libraries:0
used_memory_vm_functions:32768
used_memory_vm_total:64512
used_memory_vm_total_human:63.00K
used_memory_functions:184
used_memory_scripts:184
used_memory_scripts_human:184B
maxmemory:4294967296
maxmemory_human:4.00G
maxmemory_policy:allkeys-lru
allocator_frag_ratio:1.02
allocator_frag_bytes:978352
allocator_rss_ratio:1.08
allocator_rss_bytes:3481600
rss_overhead_ratio:1.05
rss_overhead_bytes:2527232
mem_fragmentation_ratio:1.16
mem_fragmentation_bytes:7080624
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_total_replication_buffers:0
mem_clients_slaves:0
mem_clients_normal:44544
mem_cluster_links:0
mem_aof_buffer:0
mem_allocator:jemalloc-5.2.1
active_defrag_running:0
lazyfree_pending_objects:0
lazyfreed_objects:0
# Persistence
loading:0
async_loading:0
current_cow_peak:0
current_cow_size:0
current_cow_size_age:0
current_fork_perc:0.00
current_save_keys_processed:0
current_save_keys_total:0
rdb_changes_since_last_save:618133
rdb_bgsave_in_progress:0
rdb_last_save_time:1679333496
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
rdb_saves:0
rdb_last_cow_size:0
rdb_last_load_keys_expired:0
rdb_last_load_keys_loaded:0
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_rewrites:0
aof_rewrites_consecutive_failures:0
aof_last_write_status:ok
aof_last_cow_size:0
module_fork_in_progress:0
module_fork_last_cow_size:0
# Stats
total_connections_received:6
total_commands_processed:784890
instantaneous_ops_per_sec:6
total_net_input_bytes:62320959
total_net_output_bytes:20369725
total_net_repl_input_bytes:0
total_net_repl_output_bytes:0
instantaneous_input_kbps:0.46
instantaneous_output_kbps:0.04
instantaneous_input_repl_kbps:0.00
instantaneous_output_repl_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:18560
expired_stale_perc:0.06
expired_time_cap_reached_count:0
expire_cycle_cpu_milliseconds:34722
evicted_keys:0
evicted_clients:0
total_eviction_exceeded_time:0
current_eviction_exceeded_time:0
keyspace_hits:177581
keyspace_misses:18218
pubsub_channels:0
pubsub_patterns:0
pubsubshard_channels:0
latest_fork_usec:0
total_forks:0
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
total_active_defrag_time:0
current_active_defrag_time:0
tracking_total_keys:0
tracking_total_items:0
tracking_total_prefixes:0
unexpected_error_replies:0
total_error_replies:1308
dump_payload_sanitizations:0
total_reads_processed:785383
total_writes_processed:785381
io_threaded_reads_processed:0
io_threaded_writes_processed:0
reply_buffer_shrinks:2054
reply_buffer_expands:2065
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:13ad650a73d09fd9d41079bafd2293301778b0e3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:534.161936
used_cpu_user:902.087929
used_cpu_sys_children:0.000000
used_cpu_user_children:0.003575
used_cpu_sys_main_thread:533.986340
used_cpu_user_main_thread:901.936420
# Modules
# Errorstats
errorstat_ERR:count=725
errorstat_NOPERM:count=477
errorstat_WRONGTYPE:count=106
# Cluster
cluster_enabled:0
# Keyspace
db0:keys=233437,expires=519,avg_ttl=31303011175963
"
redis>
4.2、server 參數(shù)說明
以下是 server 信息部分的所有字段的含義:
- redis_version:Redis 服務(wù)器的版本號(hào)
- redis_git_sha1:Git SHA1
- redis_git_dirty:Git dirty 標(biāo)志
- redis_build_id:構(gòu)建 ID
- redis_mode:服務(wù)器的模式(“standalone”、“sentinel” 或 “cluster”)
- os:Redis 服務(wù)器所在的操作系統(tǒng)
- arch_bits:體系結(jié)構(gòu)(32 或 64 位)
- multiplexing_api:Redis 使用的事件循環(huán)機(jī)制
- atomicvar_api:Redis 使用的 Atomicvar API
- gcc_version:用于編譯 Redis 服務(wù)器的 GCC 編譯器版本
- process_id:服務(wù)器進(jìn)程的 PID
- process_supervised:監(jiān)控系統(tǒng)(“upstart”、“systemd”、“unknown” 或 “no”)
- run_id:隨機(jī)值,用于標(biāo)識(shí) Redis 服務(wù)器(用于 Sentinel 和 Cluster)
- tcp_port:TCP/IP 監(jiān)聽端口
- server_time_usec:基于紀(jì)元的系統(tǒng)時(shí)間,微秒精度
- uptime_in_seconds:Redis 服務(wù)器啟動(dòng)后的秒數(shù)
- uptime_in_days:同樣的值以天為單位表示
- hz:服務(wù)器的當(dāng)前頻率設(shè)置
- configured_hz:服務(wù)器的配置頻率設(shè)置
- lru_clock:每分鐘遞增的時(shí)鐘,用于 LRU 管理
- executable:服務(wù)器可執(zhí)行文件的路徑
- config_file:配置文件的路徑
- io_threads_active:指示 I/O 線程是否處于活動(dòng)狀態(tài)的標(biāo)志
- shutdown_in_milliseconds:副本在完成關(guān)閉序列之前趕上復(fù)制的最大時(shí)間。此字段僅在關(guān)閉期間存在。
4.3、clients 參數(shù)說明
以下是 clients 信息部分的所有字段的含義:
- connected_clients:當(dāng)前客戶端連接數(shù)(不包括復(fù)制品連接)。
- cluster_connections:集群總線使用的套接字?jǐn)?shù)量的近似值。
- maxclients:maxclients 配置指令的值,這是 connected_clients、connected_slaves 和 cluster_connections 的上限。
- client_recent_max_input_buffer:當(dāng)前所有客戶端連接中最大的輸入緩沖區(qū)大小。
- client_recent_max_output_buffer:當(dāng)前所有客戶端連接中最大的輸出緩沖區(qū)大小。
- blocked_clients:在阻塞調(diào)用(如 BLPOP、BRPOP、BRPOPLPUSH、BLMOVE、BZPOPMIN、BZPOPMAX)中等待的客戶端數(shù)量。
- tracking_clients:正在被跟蹤的客戶端數(shù)量(CLIENT TRACKING)。
- clients_in_timeout_table:客戶端超時(shí)表中的客戶端數(shù)量。
4.4、memory 參數(shù)說明
以下是 memory 信息部分的所有字段的含義:
以下是內(nèi)存部分中各字段的含義:
- used_memory:Redis分配的字節(jié)數(shù),使用其分配器(標(biāo)準(zhǔn)libc、jemalloc或其他分配器,例如tcmalloc)。
- used_memory_human:上述值的人類可讀表示形式。
- used_memory_rss:操作系統(tǒng)看到的Redis分配的字節(jié)數(shù)(即駐留集大小)。這是由top(1)和ps(1)等工具報(bào)告的數(shù)字。
- used_memory_rss_human:上述值的人類可讀表示形式。
- used_memory_peak:Redis消耗的最大內(nèi)存峰值(以字節(jié)為單位)。
- used_memory_peak_human:上述值的人類可讀表示形式。
- used_memory_peak_perc:used_memory_peak相對(duì)于used_memory的百分比。
- used_memory_overhead:服務(wù)器為管理其內(nèi)部數(shù)據(jù)結(jié)構(gòu)分配的所有開銷之和。
- used_memory_startup:Redis在啟動(dòng)時(shí)初始消耗的內(nèi)存量(以字節(jié)為單位)。
- used_memory_dataset:數(shù)據(jù)集的大小(用于覆蓋used_memory_overhead)。
- used_memory_dataset_perc:used_memory_dataset相對(duì)于凈內(nèi)存使用量(used_memory減去used_memory_startup)的百分比。
- total_system_memory:Redis主機(jī)擁有的總內(nèi)存量。
- total_system_memory_human:上述值的人類可讀表示形式。
- used_memory_lua:Lua引擎使用的字節(jié)數(shù)。
- used_memory_lua_human:上述值的人類可讀表示形式。
- used_memory_scripts:緩存的Lua腳本使用的字節(jié)數(shù)。
- used_memory_scripts_human:上述值的人類可讀表示形式。
- maxmemory:maxmemory配置指令的值。
- maxmemory_human:上述值的人類可讀表示形式。
- maxmemory_policy:maxmemory-policy配置指令的值。
- mem_fragmentation_ratio:used_memory_rss與used_memory之間的比率。請(qǐng)注意,這不僅包括碎片,還包括其他進(jìn)程開銷(請(qǐng)參見allocator_*指標(biāo)),以及代碼、共享庫(kù)、堆棧等開銷。
- mem_fragmentation_bytes:used_memory_rss與used_memory之間的差異。請(qǐng)注意,當(dāng)總碎片字節(jié)較低(幾兆字節(jié))時(shí),高比率(例如1.5及以上)不表示問題。
- allocator_frag_ratio:allocator_active和allocator_allocated之間的比率。這是真正的(外部)碎片度量標(biāo)準(zhǔn)(不是mem_fragmentation_ratio)。
- allocator_frag_bytes:allocator_active和allocator_allocated之間的差異。請(qǐng)參閱關(guān)于mem_fragmentation_bytes的注釋。
- allocator_rss_ratio:allocator_resident和allocator_active之間的比率。這通常表示分配器可以并且很快會(huì)釋放回OS的頁(yè)面。
- allocator_rss_bytes:allocator_resident和allocator_active之間的差異。
- rss_overhead_ratio:used_memory_rss(進(jìn)程RSS)與allocator_resident之間的比率。這包括不是分配器或堆相關(guān)的RSS開銷。
- rss_overhead_bytes:used_memory_rss(進(jìn)程RSS)與allocator_resident之間的差異。
- allocator_allocated: 分配器分配的總字節(jié)數(shù),包括內(nèi)部碎片。通常與used_memory相同。
- allocator_active: 分配器活動(dòng)頁(yè)面中的總字節(jié)數(shù),包括外部碎片。
- allocator_resident: 分配器中居民(RSS)的總字節(jié)數(shù),包括可以通過MEMORY PURGE釋放給操作系統(tǒng)(或只是等待)的頁(yè)面。
- mem_not_counted_for_evict: 不計(jì)入密鑰驅(qū)逐的使用內(nèi)存。這基本上是瞬態(tài)副本和AOF緩沖區(qū)。
- mem_clients_slaves: 副本客戶端使用的內(nèi)存 - 從Redis 7.0開始,副本緩沖區(qū)與復(fù)制后備共享內(nèi)存,因此當(dāng)副本不觸發(fā)內(nèi)存使用增加時(shí),此字段可能顯示為0。
- mem_clients_normal: 普通客戶端使用的內(nèi)存
- mem_cluster_links: 在啟用集群模式時(shí),與對(duì)等體的鏈接使用的內(nèi)存。
- mem_aof_buffer: 用于AOF和AOF重寫緩沖區(qū)的瞬態(tài)內(nèi)存
- mem_replication_backlog: 復(fù)制后備使用的內(nèi)存
- mem_total_replication_buffers: 用于復(fù)制緩沖區(qū)的總內(nèi)存 - 在Redis 7.0中添加。
- mem_allocator: 在編譯時(shí)選擇的內(nèi)存分配器。
- active_defrag_running: 當(dāng)啟用主動(dòng)碎片整理時(shí),這表示碎片整理當(dāng)前是否活動(dòng),并且它打算利用的CPU百分比。
- lazyfree_pending_objects: 等待釋放的對(duì)象數(shù)量(作為調(diào)用UNLINK或帶有ASYNC選項(xiàng)的FLUSHDB和FLUSHALL的結(jié)果)
- lazyfreed_objects: 已延遲釋放的對(duì)象數(shù)量。
理想情況下,used_memory_rss 的值應(yīng)該只比 used_memory 略高。當(dāng) rss >> used 時(shí),大的差異可能意味著存在(外部)內(nèi)存碎片,可以通過檢查 allocator_frag_ratio 和allocator_frag_bytes 來評(píng)估。當(dāng) used >> rss 時(shí),這意味著 Redis 的一部分內(nèi)存已經(jīng)被操作系統(tǒng)換出,可能會(huì)出現(xiàn)一些顯著的延遲。
由于 Redis 無法控制其分配如何映射到內(nèi)存頁(yè),因此高 used_memory_rss 通常是內(nèi)存使用量激增的結(jié)果。
當(dāng) Redis 釋放內(nèi)存時(shí),內(nèi)存會(huì)被返還給分配器,分配器可能會(huì)或可能不會(huì)將內(nèi)存返還給系統(tǒng)。used_memory 值和操作系統(tǒng)報(bào)告的內(nèi)存消耗之間可能存在差異。這可能是由于 Redis 使用并釋放了內(nèi)存,但尚未將其返還給系統(tǒng)。used_memory_peak 值通常有助于檢查此點(diǎn)。
有關(guān)服務(wù)器內(nèi)存的其他內(nèi)省信息可以通過參考 MEMORY STATS 命令和 MEMORY DOCTOR 獲得。
4.5、persistence 參數(shù)說明
以下是 persistence 信息部分的所有字段的含義:
- loading: 表示是否正在進(jìn)行加載dump文件的標(biāo)志
- async_loading: 在服務(wù)舊數(shù)據(jù)時(shí)異步加載復(fù)制數(shù)據(jù)集。這意味著啟用了repl-diskless-load并設(shè)置為swapdb。Redis 7.0中添加。
- current_cow_peak: 當(dāng)子進(jìn)程正在運(yùn)行時(shí),復(fù)制寫入內(nèi)存的峰值大?。ㄒ宰止?jié)為單位)
- current_cow_size: 當(dāng)子進(jìn)程正在運(yùn)行時(shí),復(fù)制寫入內(nèi)存的大?。ㄒ宰止?jié)為單位)
- current_cow_size_age: current_cow_size值的年齡,以秒為單位。
- current_fork_perc: 當(dāng)前fork過程的進(jìn)度百分比。對(duì)于AOF和RDB forks,它是當(dāng)前current_save_keys_processed占current_save_keys_total的百分比。
- current_save_keys_processed: 當(dāng)前保存操作處理的鍵數(shù)
- current_save_keys_total: 當(dāng)前保存操作開始時(shí)的鍵數(shù)
- rdb_changes_since_last_save: 上次dump以來更改的次數(shù)
- rdb_bgsave_in_progress: 表示RDB保存正在進(jìn)行中的標(biāo)志
- rdb_last_save_time: 上次成功的RDB保存的基于Epoch的時(shí)間戳
- rdb_last_bgsave_status: 上次RDB保存操作的狀態(tài)
- rdb_last_bgsave_time_sec: 上次RDB保存操作的持續(xù)時(shí)間(以秒為單位)
- rdb_current_bgsave_time_sec: 如果有,則表示正在進(jìn)行中的RDB保存操作的持續(xù)時(shí)間
- rdb_last_cow_size: 上次RDB保存操作期間復(fù)制寫入內(nèi)存的大?。ㄒ宰止?jié)為單位)
- rdb_last_load_keys_expired: 在上次RDB加載期間刪除的易失性鍵的數(shù)量。Redis 7.0中添加。
- rdb_last_load_keys_loaded: 在上次RDB加載期間加載的鍵數(shù)。Redis 7.0中添加。
- aof_enabled: 表示已激活A(yù)OF日志記錄的標(biāo)志
- aof_rewrite_in_progress: 表示正在進(jìn)行AOF重寫操作的標(biāo)志
- aof_rewrite_scheduled: 表示一旦正在進(jìn)行的RDB保存操作完成,將安排AOF重寫操作的標(biāo)志。
- aof_last_rewrite_time_sec: 上次AOF重寫操作的持續(xù)時(shí)間(以秒為單位)
- aof_current_rewrite_time_sec: 如果有,則表示正在進(jìn)行中的AOF重寫操作的持續(xù)時(shí)間
- aof_last_bgrewrite_status: 上次AOF重寫操作的狀態(tài)
- aof_last_write_status: 上次寫入AOF的操作的狀態(tài)
- aof_last_cow_size: 上次AOF重寫操作期間復(fù)制寫入內(nèi)存的大?。ㄒ宰止?jié)為單位)
- module_fork_in_progress: 表示模塊fork正在進(jìn)行中的標(biāo)志
- module_fork_last_cow_size: 上次模塊fork操作期間復(fù)制寫入內(nèi)存的大?。ㄒ宰止?jié)為單位)
- aof_rewrites: 自啟動(dòng)以來執(zhí)行的AOF重寫次數(shù)
- rdb_saves: 自啟動(dòng)以來執(zhí)行的RDB快照數(shù)
rdb_changes_since_last_save 指的是自上次調(diào)用SAVE或BGSAVE以來在數(shù)據(jù)集中產(chǎn)生某種更改
如果啟用了AOF,將添加以下附加字段:
- aof_current_size:AOF當(dāng)前文件大小
- aof_base_size:最新啟動(dòng)或重寫時(shí)的AOF文件大小
- aof_pending_rewrite:指示將在當(dāng)前RDB保存完成后安排AOF重寫操作的標(biāo)志。
- aof_buffer_length:AOF緩沖區(qū)大小
- aof_rewrite_buffer_length:AOF重寫緩沖區(qū)的大小。請(qǐng)注意,此字段已在Redis 7.0中刪除。
- aof_pending_bio_fsync:后臺(tái)I / O隊(duì)列中待處理的fsync作業(yè)數(shù)
- aof_delayed_fsync:延遲的fsync計(jì)數(shù)器
如果正在進(jìn)行加載操作,則將添加以下附加字段:
- loading_start_time:加載操作開始時(shí)的時(shí)間戳
- loading_total_bytes:文件的總大小
- loading_rdb_used_mem:文件創(chuàng)建時(shí)生成RDB文件的服務(wù)器的內(nèi)存使用情況
- loading_loaded_bytes:已加載的字節(jié)數(shù)
- loading_loaded_perc:以百分比表示的相同值
- loading_eta_seconds:加載完成的剩余時(shí)間(以秒為單位)
4.6、stats 參數(shù)說明
以下是 stats 信息部分的所有字段的含義:
- total_connections_received:服務(wù)器接受的連接總數(shù)
- total_commands_processed:服務(wù)器處理的命令總數(shù)
- instantaneous_ops_per_sec:每秒處理的命令數(shù)
- total_net_input_bytes:從網(wǎng)絡(luò)讀取的總字節(jié)數(shù)
- total_net_output_bytes:寫入網(wǎng)絡(luò)的總字節(jié)數(shù)
- total_net_repl_input_bytes:用于復(fù)制目的從網(wǎng)絡(luò)讀取的總字節(jié)數(shù)
- total_net_repl_output_bytes:用于復(fù)制目的寫入網(wǎng)絡(luò)的總字節(jié)數(shù)
- instantaneous_input_kbps:每秒從網(wǎng)絡(luò)讀取的速率,以 KB/sec 為單位
- instantaneous_output_kbps:每秒寫入網(wǎng)絡(luò)的速率,以 KB/sec 為單位
- instantaneous_input_repl_kbps:每秒為復(fù)制目的從網(wǎng)絡(luò)讀取的速率,以 KB/sec 為單位
- instantaneous_output_repl_kbps:每秒為復(fù)制目的寫入網(wǎng)絡(luò)的速率,以 KB/sec 為單位
- rejected_connections:因 maxclients 限制而被拒絕的連接數(shù)
- sync_full:與副本進(jìn)行完全重新同步的次數(shù)
- sync_partial_ok:接受的部分重新同步請(qǐng)求的次數(shù)
- sync_partial_err:被拒絕的部分重新同步請(qǐng)求的次數(shù)
- expired_keys:鍵過期事件的總數(shù)
- expired_stale_perc:可能過期的鍵的百分比
- expired_time_cap_reached_count:已停止活動(dòng)到期周期的次數(shù)
- expire_cycle_cpu_milliseconds:在活動(dòng)到期周期上花費(fèi)的累計(jì)時(shí)間
- evicted_keys:因 maxmemory 限制而被逐出的鍵的數(shù)量
- evicted_clients:因 maxmemory-clients 限制而被逐出的客戶端的數(shù)量。在 Redis 7.0 中添加。
- total_eviction_exceeded_time:自服務(wù)器啟動(dòng)以來,used_memory 大于 maxmemory 的總時(shí)間,以毫秒為單位
- current_eviction_exceeded_time:used_memory 自上次上升到 maxmemory 以來經(jīng)過的時(shí)間,以毫秒為單位
- keyspace_hits:在主字典中查找鍵成功的次數(shù)
- keyspace_misses:在主字典中查找鍵失敗的次數(shù)
- pubsub_channels:具有客戶端訂閱的 pub/sub 頻道的全局?jǐn)?shù)量
- pubsub_patterns:具有客戶端訂閱的 pub/sub 模式的全局?jǐn)?shù)量
- pubsubshard_channels:具有客戶端訂閱的 pub/sub 分片頻道的全局?jǐn)?shù)量。在 Redis 7.0.3 中添加。
- latest_fork_usec:最新一次 fork 操作的持續(xù)時(shí)間,以微秒為單位
- total_forks:自服務(wù)器啟動(dòng)以來的 fork 操作總數(shù)
- migrate_cached_sockets:為 MIGRATE 目的打開的套接字?jǐn)?shù)
- slave_expires_tracked_keys:被跟蹤以進(jìn)行到期處理的鍵的數(shù)量(僅適用于可寫副本)
- active_defrag_hits:由主動(dòng)碎片整理過程執(zhí)行的值重定向次數(shù)
- active_defrag_misses: 主動(dòng)碎片整理進(jìn)程啟動(dòng)的已中止的值重新分配數(shù)量
- active_defrag_key_hits: 被主動(dòng)碎片整理處理的鍵的數(shù)量
- active_defrag_key_misses: 被主動(dòng)碎片整理跳過的鍵的數(shù)量
- total_active_defrag_time: 內(nèi)存碎片化超過限制的總時(shí)間(以毫秒為單位)
- current_active_defrag_time: 上次內(nèi)存碎片化超過限制后經(jīng)過的時(shí)間(以毫秒為單位)
- tracking_total_keys: 服務(wù)器正在跟蹤的鍵的數(shù)量
- tracking_total_items: 正在被跟蹤的項(xiàng)的數(shù)量,即每個(gè)鍵的客戶端數(shù)量之和
- tracking_total_prefixes: 服務(wù)器前綴表中跟蹤的前綴數(shù)量(僅適用于廣播模式)
- unexpected_error_replies: 意外錯(cuò)誤回復(fù)的數(shù)量,即 AOF 加載或復(fù)制過程中出現(xiàn)的錯(cuò)誤類型
- total_error_replies: 發(fā)出的錯(cuò)誤回復(fù)總數(shù),即拒絕執(zhí)行命令的數(shù)量(命令執(zhí)行之前的錯(cuò)誤)和失敗的命令數(shù)量(命令執(zhí)行期間的錯(cuò)誤)
- dump_payload_sanitizations: 轉(zhuǎn)儲(chǔ)負(fù)載深度完整性驗(yàn)證的總次數(shù)(請(qǐng)參閱sanitize-dump-payload配置)。
- total_reads_processed: 已處理的讀事件總數(shù)
- total_writes_processed: 已處理的寫事件總數(shù)
- io_threaded_reads_processed: 主線程和I/O 線程處理的讀事件數(shù)量
- io_threaded_writes_processed: 主線程和I/O 線程處理的寫事件數(shù)量
- acl_access_denied_auth: 鑒權(quán)失敗的次數(shù)
- acl_access_denied_cmd: 因命令訪問被拒絕而被拒絕執(zhí)行的命令數(shù)量
- acl_access_denied_key: 因鍵訪問被拒絕而被拒絕執(zhí)行的命令數(shù)量
- acl_access_denied_channel: 因頻道訪問被拒絕而被拒絕執(zhí)行的命令數(shù)量
4.7、replication 參數(shù)說明
以下是 replication 信息部分的所有字段的含義:
- role: 如果實(shí)例不是任何主服務(wù)器的副本,則值為“master”,如果實(shí)例是某個(gè)主服務(wù)器的副本,則值為“slave”。請(qǐng)注意,副本可以是另一個(gè)副本的主服務(wù)器(鏈?zhǔn)綇?fù)制)。
- master_failover_state: 進(jìn)行中故障轉(zhuǎn)移的狀態(tài)(如果有)。
- master_replid: Redis 服務(wù)器的復(fù)制ID。
- master_replid2: 用于故障轉(zhuǎn)移后的 PSYNC 的次要復(fù)制ID。
- master_repl_offset: 服務(wù)器的當(dāng)前復(fù)制偏移量。
- second_repl_offset: 接受復(fù)制ID的偏移量上限。
- repl_backlog_active: 表示復(fù)制后備日志是否處于活動(dòng)狀態(tài)的標(biāo)志。
- repl_backlog_size: 復(fù)制后備緩沖區(qū)的總大?。ㄒ宰止?jié)為單位)。
- repl_backlog_first_byte_offset: 復(fù)制后備緩沖區(qū)的主偏移量。
- repl_backlog_histlen: 復(fù)制后備緩沖區(qū)中數(shù)據(jù)的大?。ㄒ宰止?jié)為單位)。
如果實(shí)例是一個(gè)副本,那么會(huì)提供這些額外的字段:
- master_host:主節(jié)點(diǎn)的主機(jī)名或 IP 地址
- master_port:主節(jié)點(diǎn)的 TCP 端口號(hào)
- master_link_status:連接狀態(tài)(up/down)
- master_last_io_seconds_ago:與主節(jié)點(diǎn)進(jìn)行最后一次交互的時(shí)間(秒數(shù))
- master_sync_in_progress:指示主節(jié)點(diǎn)正在同步到副本
- slave_read_repl_offset:副本實(shí)例的讀取復(fù)制偏移量
- slave_repl_offset:副本實(shí)例的復(fù)制偏移量
- slave_priority:作為故障轉(zhuǎn)移候選實(shí)例的優(yōu)先級(jí)
- slave_read_only:標(biāo)志表示副本是否只讀
- replica_announced:標(biāo)志表示副本是否由 Sentinel 宣布。
如果正在進(jìn)行SYNC操作,將提供以下附加字段:
- master_sync_total_bytes: 需要傳輸?shù)目傋止?jié)數(shù)。當(dāng)大小未知時(shí)(例如使用repl-diskless-sync配置指令時(shí)),此值可能為0。
- master_sync_read_bytes: 已傳輸?shù)淖止?jié)數(shù)。
- master_sync_left_bytes: 在同步完成之前剩余的字節(jié)數(shù)(當(dāng)master_sync_total_bytes為0時(shí)可能為負(fù)數(shù))。
- master_sync_perc: master_sync_read_bytes占master_sync_total_bytes的百分比,或者在- master_sync_total_bytes為0時(shí)使用loading_rdb_used_mem進(jìn)行近似計(jì)算。
- master_sync_last_io_seconds_ago: 在SYNC操作期間的最后一次傳輸I/O之后的秒數(shù)。
如果實(shí)例是一個(gè)副本,以下額外的字段將被提供:
- master_host:主服務(wù)器的主機(jī)名或 IP 地址
- master_port:主服務(wù)器的監(jiān)聽 TCP 端口
- master_link_status:鏈路狀態(tài)(上行或下行)
- master_last_io_seconds_ago:距上次與主服務(wù)器進(jìn)行交互的秒數(shù)
- master_sync_in_progress:指示主服務(wù)器正在同步到副本
- slave_read_repl_offset:副本實(shí)例的讀取復(fù)制偏移量。
- slave_repl_offset:副本實(shí)例的復(fù)制偏移量
- slave_priority:副本作為故障轉(zhuǎn)移候選者的優(yōu)先級(jí)
- slave_read_only:指示副本是否為只讀
- replica_announced:指示 Sentinel 是否已宣告該副本。
4.8、cpu 參數(shù)說明
以下是 cpu 信息部分的所有字段的含義:
- used_cpu_sys:Redis 服務(wù)器消耗的系統(tǒng) CPU,是進(jìn)程中所有線程(主線程和后臺(tái)線程)消耗的系統(tǒng) CPU 之和。
- used_cpu_user:Redis 服務(wù)器消耗的用戶 CPU,是進(jìn)程中所有線程(主線程和后臺(tái)線程)消耗的用戶 CPU 之和。
- used_cpu_sys_children:Redis 后臺(tái)進(jìn)程消耗的系統(tǒng) CPU。
- used_cpu_user_children:Redis 后臺(tái)進(jìn)程消耗的用戶 CPU。
- used_cpu_sys_main_thread:Redis 主線程消耗的系統(tǒng) CPU。
- used_cpu_user_main_thread:Redis 主線程消耗的用戶 CPU。
4.9、commandstats 參數(shù)說明
commandstats 是一個(gè) Redis INFO 命令輸出的一部分,它提供有關(guān) Redis 實(shí)例上執(zhí)行的每種命令的統(tǒng)計(jì)信息。這些統(tǒng)計(jì)信息包括以下內(nèi)容:
- calls:該命令在 Redis 服務(wù)器中執(zhí)行的次數(shù)(不包括拒絕的調(diào)用)
- usec:該命令在 Redis 服務(wù)器上消耗的 CPU 時(shí)間的總和(以微秒為單位)
- usec_per_call:該命令每次調(diào)用在 Redis 服務(wù)器上消耗的平均 CPU 時(shí)間(以微秒為單位)
- rejected_calls:在執(zhí)行該命令之前被 Redis 服務(wù)器拒絕的調(diào)用次數(shù)
- failed_calls:在執(zhí)行該命令期間發(fā)生錯(cuò)誤的調(diào)用次數(shù)
對(duì)于每種命令類型,INFO 命令的輸出都會(huì)添加一個(gè)以 cmdstat_XXX 命名的行,其中 XXX 是命令的名稱。例如,以下是關(guān)于 INCR 命令的示例輸出:
cmdstat_incr:calls=100000,usec=45222,usec_per_call=0.45,rejected_calls=0,failed_calls=0
這表明 INCR 命令已經(jīng)被調(diào)用了 100,000 次,在 Redis 服務(wù)器上消耗了 45,222 微秒的 CPU 時(shí)間,平均每次調(diào)用耗時(shí) 0.45 微秒,沒有被拒絕的調(diào)用和失敗的調(diào)用。
4.10、latencystats 參數(shù)說明
latencystats 是 Redis 的一個(gè)統(tǒng)計(jì)指標(biāo),提供了基于命令類型的延遲百分比分布統(tǒng)計(jì)信息。默認(rèn)情況下,導(dǎo)出的延遲百分比是 p50、p99 和 p999。如果需要更改導(dǎo)出的百分比,可以使用 CONFIG SET latency-tracking-info-percentiles “50.0 99.0 99.9” 命令進(jìn)行更改。
latencystats 需要啟用擴(kuò)展延遲監(jiān)視功能(默認(rèn)情況下已啟用)。如果需要啟用它,可以使用 CONFIG SET latency-tracking yes 命令進(jìn)行啟用。
對(duì)于每種命令類型,latencystats 提供以下行:
latency_percentiles_usec_XXX: p<percentile 1>=<percentile 1 value>,p<percentile 2>=<percentile 2 value>,…
其中,XXX 是命令類型的名稱,p 表示第 n 個(gè)百分位數(shù),其值為 ,以微秒為單位。例如:
latency_percentiles_usec_get: p50=10,p99=20,p999=30,…
這意味著在執(zhí)行 GET 命令時(shí),50% 的請(qǐng)求的延遲小于 10 微秒,99% 的請(qǐng)求的延遲小于 20 微秒,99.9% 的請(qǐng)求的延遲小于 30 微秒。
4.11、errorstats 參數(shù)說明
Redis 提供了errorstats 選項(xiàng),它允許跟蹤Redis返回的錯(cuò)誤類型以及它們的數(shù)量。這些錯(cuò)誤基于答復(fù)錯(cuò)誤前綴,該前綴指出 Redis 返回的錯(cuò)誤類型(例如,ERR或WRONGTYPE等)。
使用 INFO 命令獲取 Redis 服務(wù)器的狀態(tài)信息時(shí),可以查看到 errorstats 選項(xiàng)的相關(guān)信息。對(duì)于每個(gè)錯(cuò)誤類型,都會(huì)顯示其名稱以及出現(xiàn)的次數(shù)。
例如,以下是在 Redis 中執(zhí)行 INFO 命令并查看 errorstats 選項(xiàng)的輸出示例:
# Error stats
errorstat_ERR:count=1000
errorstat_WRONGTYPE:count=500
errorstat_READONLY:count=200
在此示例中,Redis 服務(wù)器已經(jīng)返回了 1000 個(gè)ERR錯(cuò)誤、500 個(gè) WRONGTYP E錯(cuò)誤和 200 個(gè) READONLY 錯(cuò)誤。這些錯(cuò)誤信息可以用于跟蹤 Redis 服務(wù)器的健康狀況,以及檢測(cè)是否存在特定類型的錯(cuò)誤,以便在需要時(shí)對(duì) Redis 服務(wù)器進(jìn)行調(diào)整和維護(hù)。
4.12、sentinel 參數(shù)說明
sentinel 部分僅適用于 Redis Sentinel 實(shí)例。它包括以下字段:
- sentinel_masters:此Sentinel實(shí)例監(jiān)視的Redis主服務(wù)器數(shù)量
- sentinel_tilt:值為1表示此Sentinel處于TILT模式
- sentinel_tilt_since_seconds:當(dāng)前TILT的持續(xù)時(shí)間(以秒為單位),如果沒有TILTed,則為-1。在Redis 7.0.0中添加
- sentinel_running_scripts:此Sentinel當(dāng)前正在執(zhí)行的腳本數(shù)量
- sentinel_scripts_queue_length:等待執(zhí)行的用戶腳本隊(duì)列的長(zhǎng)度
- sentinel_simulate_failure_flags:SENTINEL SIMULATE-FAILURE命令的標(biāo)志
4.13、cluster 參數(shù)說明
集群部分當(dāng)前僅包含一個(gè)唯一的字段:
- cluster_enabled:指示Redis集群已啟用
4.14、modules 參數(shù)說明
如果模塊提供了附加信息,則模塊部分包含有關(guān)加載的模塊的其他信息。此部分屬性行的字段部分始終以模塊的名稱為前綴。
4.15、keyspace 參數(shù)說明
keyspace 部分提供有關(guān)每個(gè)數(shù)據(jù)庫(kù)的主字典的統(tǒng)計(jì)信息。統(tǒng)計(jì)信息是鍵的數(shù)量和具有過期時(shí)間的鍵的數(shù)量。
對(duì)于每個(gè)數(shù)據(jù)庫(kù),添加以下行:
dbXXX:keys=XXX,expires=XXX
關(guān)于本手冊(cè)中使用的“slave”一詞的說明:從Redis 5開始,如果不是為了向后兼容性,Redis項(xiàng)目不再使用“slave”一詞。不幸的是,在此命令中,單詞“slave”是協(xié)議的一部分,因此只有當(dāng)此API自然過時(shí)時(shí),我們才能刪除此類出現(xiàn)。
模塊生成的部分:從Redis 6開始,模塊可以將它們的信息注入到INFO命令中,即使提供了所有參數(shù),這些也將默認(rèn)被排除在外(它將包括已加載模塊的列表,但不包括它們生成的信息字段)。要獲取這些信息,必須使用模塊參數(shù)或everything。
5、歷史
從 Redis 7.0.0版本開始:增加了對(duì)獲取多個(gè)部分參數(shù)的支持。文章來源:http://www.zghlxwxcb.cn/news/detail-758480.html
6、結(jié)語(yǔ)
在 Redis 中,INFO 命令提供了大量的系統(tǒng)信息和統(tǒng)計(jì)數(shù)據(jù),這些信息和數(shù)據(jù)可以幫助我們更好地了解 Redis 服務(wù)器的狀態(tài)和性能表現(xiàn),從而更好地優(yōu)化 Redis 應(yīng)用程序。在實(shí)際的開發(fā)和運(yùn)維過程中,我們可以通過不同的 Redis 客戶端(如 Java 客戶端、Spring Boot 客戶端等)來調(diào)用 INFO 命令,從而獲取 Redis 服務(wù)器的信息和統(tǒng)計(jì)數(shù)據(jù)。同時(shí),我們也可以通過第三方監(jiān)控工具來實(shí)時(shí)監(jiān)控 Redis 服務(wù)器的狀態(tài)和性能表現(xiàn),以保障 Redis 應(yīng)用程序的可靠性和高可用性。文章來源地址http://www.zghlxwxcb.cn/news/detail-758480.html
本文教程到此結(jié)束,祝愿小伙伴們?cè)诰幊讨弥心軌蛴淇斓靥剿?、學(xué)習(xí)、成長(zhǎng)!
到了這里,關(guān)于深入理解 Redis INFO 命令參數(shù):監(jiān)控服務(wù)器性能的必備工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!