Redis是一個開源、高性能的非關係型key-value存儲系統。在實際應用中,我們經常需要查看Redis集群的狀態以及節點信息,這樣可以方便我們了解Redis集群的健康狀態、掌握節點的信息分布以及定位出現問題的節點等。本文將介紹如何查看Redis集群狀態及節點信息。
一、使用redis-cluster工具Gossip協議查看集群狀態
redis-cluster工具自帶Gossip協議,可以自動廣播節點信息給其他節點,並收集節點信息,從而形成整個集群的狀態視圖。下面是示例代碼:
redis-cli -c -h ${redisClusterHost} -p ${redisClusterPort} # 進入redis-cli模式後,輸入下面的命令即可查看集群狀態 cluster nodes
執行上述命令後,集群狀態將以一張表格的形式展現在屏幕上,表格的每一行代表一個節點。可以通過表格內容了解每個節點的ID、IP地址、埠,以及節點狀態、負責的槽位等信息,如下所示:
40f44a0eb25cf9d868a76a02305258bd4b8e5f34 127.0.0.1:6300@16380 master - 0 1596414494000 3 connected 5461-10922 58c6e4d9b15d72f0c60cc9d5f4532fbdfb69af04 127.0.0.1:6301@16381 master - 0 1596414494522 2 connected 10923-16383 c2c3cb110b88adb31b6377787411d749a3482439 127.0.0.1:6303@16383 myself,master - 0 1596414494000 1 connected 0-5460
二、使用redis-trib.rb工具查看集群狀態
redis-trib.rb是Redis官方提供的集群管理工具,同時也提供了查看Redis集群狀態的命令。下面是示例代碼:
redis-trib.rb info ${redisClusterHost}:${redisClusterPort}
執行上述命令後,將列印出集群狀態,包括集群的大小、可用的節點數量、slots的狀態等信息。例如:
127.0.0.1:6300 (40f44a0e...) -> 0 keys | 5462 slots | 1 slaves. 127.0.0.1:6301 (58c6e4d9...) -> 0 keys | 5462 slots | 1 slaves. 127.0.0.1:6303 (c2c3cb11...) -> 0 keys | 5461 slots | 1 slaves. [OK] 0 keys in 3 masters. 0.00 keys per slot on average.
三、使用redis-cli工具查看單節點信息
當我們需要查看某個Redis節點的詳細信息時,可以使用redis-cli工具來實現。下面是示例代碼:
redis-cli -h ${redisNodeHost} -p ${redisNodePort} # 進入redis-cli模式後,輸入下面的命令即可查看單節點信息 info
執行上述命令後,將列印出該節點的狀態信息,包括節點ID、運行時間、客戶端連接數、內存使用情況、命令統計信息等等。例如:
# Server redis_version:5.0.7 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:70ab23e9cdddf2dc redis_mode:cluster os:Linux 4.19.76-linuxkit x86_64 arch_bits:64 multiplexing_api:epoll atomicvar_api:atomic-builtin gcc_version:8.3.0 process_id:1 run_id:d8fb0e19bd9c9da146f70ddbecd22a56bc8707e0 tcp_port:6379 uptime_in_seconds:904352 uptime_in_days:10 hz:10 configured_hz:10 lru_clock:15750137 executable:/data/redis-server config_file: # Clients connected_clients:9 client_recent_max_input_buffer:2 client_recent_max_output_buffer:0 blocked_clients:0 # Memory used_memory:586112 used_memory_human:572.34K used_memory_rss:784384 used_memory_rss_human:765.87K used_memory_peak:614344 used_memory_peak_human:599.79K used_memory_peak_perc:95.64% used_memory_overhead:575040 used_memory_startup:790080 used_memory_dataset:11072 used_memory_dataset_perc:18.92% allocator_allocated:1202664 allocator_active:1249280 allocator_resident:9571328 total_system_memory:8361662976 total_system_memory_human:7.79G used_memory_lua:37888 used_memory_lua_human:37.00K used_memory_scripts:0 used_memory_scripts_human:0B number_of_cached_scripts:0 maxmemory:0 maxmemory_human:0B maxmemory_policy:noeviction allocator_frag_ratio:1.04 allocator_frag_bytes:46816 allocator_rss_ratio:7.67 allocator_rss_bytes:8322048 rss_overhead_ratio:0.08 rss_overhead_bytes:-8781824
四、使用redis-cli工具查看槽位分布情況
在Redis集群中,我們可以通過槽位分布情況來了解集群數據的分布情況。下面是示例代碼:
redis-cli -h ${redisClusterHost} -p ${redisClusterPort} -c # 進入redis-cli模式後,輸入下面的命令即可查看槽位分布情況 cluster slots
執行上述命令後,將列印出集群槽位的分布情況,以及分配在對應節點上的槽位範圍。例如:
1) 1) (integer) 5461 2) (integer) 10922 3) 1) "127.0.0.1" 2) (integer) 6301 3) "58c6e4d9b15d72f0c60cc9d5f4532fbdfb69af04" 4) 1) "127.0.0.1" 2) (integer) 6303 3) "c2c3cb110b88adb31b6377787411d749a3482439" 2) 1) (integer) 10923 2) (integer) 16383 3) 1) "127.0.0.1" 2) (integer) 6301 3) "58c6e4d9b15d72f0c60cc9d5f4532fbdfb69af04" 4) 1) "127.0.0.1" 2) (integer) 6303 3) "c2c3cb110b88adb31b6377787411d749a3482439" 3) 1) (integer) 0 2) (integer) 5460 3) 1) "127.0.0.1" 2) (integer) 6300 3) "40f44a0eb25cf9d868a76a02305258bd4b8e5f34"
五、小結
本文介紹了如何通過redis-cluster和redis-trib.rb工具來查看Redis集群狀態及節點信息,以及如何使用redis-cli工具來查看單節點信息和槽位分布情況。這些方法可以幫助我們更好地了解Redis集群的健康狀態,在面對節點問題時也能夠更快地定位問題。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/233990.html