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集群的健康状态,在面对节点问题时也能够更快地定位问题。