当前位置:首页 > 问答 > 正文

Redis集群成员怎么查,怎么看它们的状态和情况,有啥简单方法吗

要查看Redis集群的成员、状态和情况,确实有几种直接且相对简单的方法,我们不需要成为专家也能掌握基本操作,下面主要介绍两种最常用、最核心的方法:使用Redis自带的命令行工具和查看Redis的输出信息。

使用Redis命令行工具,这是最直接的方法

Redis自带了一个非常强大的命令行工具,叫做redis-cli,通过给它加上特定的参数,我们可以直接与集群对话,获取我们需要的信息,这是最权威的信息来源,因为信息直接来自Redis本身。

连接集群并检查整体状态

你需要知道集群中任意一个节点的IP地址和端口号,假设这个节点的地址是0.0.1(本地),端口是7001

打开你的终端(或命令提示符),输入以下命令:

redis-cli -c -h 127.0.0.1 -p 7001 cluster info
  • -c 参数非常重要,它表示以集群模式连接,没有这个参数,如果命令发送的键(key)不在当前节点上,可能会报错。
  • -h-p 分别指定主机和端口。
  • cluster info 是核心命令,它返回的是整个集群的宏观健康状况摘要。

执行这个命令后,你会看到类似下面的输出(根据Redis官方文档和实际输出整理):

cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:123456
cluster_stats_messages_pong_sent:123789
cluster_stats_messages_sent:247245
cluster_stats_messages_ping_received:123789
cluster_stats_messages_pong_received:123456
cluster_stats_messages_received:247245

这里有几个关键信息,一眼就能看懂集群好坏:

  • cluster_state:ok:这是最重要的指标,只要它是ok,就表示集群所有节点都正常,如果是fail,说明有至少一个主节点挂了,并且没有从节点能顶替它,集群已经不可用了。
  • cluster_slots_assigned:集群总共有16384个槽(数据分片),这里显示已经分配了多少,正常情况应该是全部分配完。
  • cluster_slots_ok:正常服务的槽数量,如果这个数小于cluster_slots_assigned,说明有槽出了问题。
  • cluster_known_nodes:集群中已知的总节点数(包括主节点和从节点)。
  • cluster_size:集群中主节点的数量,一个3主3从的集群,这里就会显示3

通过cluster info,你可以在10秒钟内对集群的健康状况有一个快速的判断。

Redis集群成员怎么查,怎么看它们的状态和情况,有啥简单方法吗

查看详细的节点成员列表

知道了集群整体是好的,接下来我们看看具体有哪些成员,使用命令:

redis-cli -c -h 127.0.0.1 -p 7001 cluster nodes

这个命令会输出一个更详细的列表,包含了集群中每一个节点的信息,每一行代表一个节点,信息非常丰富,输出看起来会像这样(格式来源于Redis官方文档描述):

eft8d74e6d3e8a9f29b4dbf71c175c466e12d0d9 127.0.0.1:7001@17001 master - 0 1555500000000 1 connected 0-5460
a2f8c6d1e1b7a9f3c5d7e9b1a3c7e5d9b2a4f6c1 127.0.0.1:7002@17002 master - 0 1555500000000 2 connected 5461-10922
c3d9e8f7a6b5c4d3e2f1a9b8c7d6e5f4a3b2c1d0 127.0.0.1:7003@17003 master - 0 1555500000000 3 connected 10923-16383
d4e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8 127.0.0.1:7004@17004 slave eft8d74e6d3e8a9f29b4dbf71c175c466e12d0d9 0 1555500000000 1 connected
e5f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8 127.0.0.1:7005@17005 slave a2f8c6d1e1b7a9f3c5d7e9b1a3c7e5d9b2a4f6c1 0 1555500000000 2 connected
f6a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8 127.0.0.1:7006@17006 slave c3d9e8f7a6b5c4d3e2f1a9b8c7d6e5f4a3b2c1d0 0 1555500000000 3 connected

虽然看起来有点乱,但我们可以拆解每一列的含义:

  • 第一长串(如 eft8d...):这是节点的唯一ID,可以理解为节点的身份证号。
  • IP:端口@集群总线端口:节点的访问地址,第二个端口是用于节点间通信的,我们一般不用管。
  • 角色master 表示主节点,负责读写和存储数据;slave 表示从节点,是主节点的备份。
  • 如果是从节点,这里会显示其主节点的ID:第四行的从节点7004的主节点就是第一行的7001(通过ID对应),这让你很清楚谁是谁的备份。
  • 连接状态:通常是connected,表示该节点与集群连接正常,如果是disconnected或其他状态,就说明这个节点可能掉线了。
  • 数据槽范围:例如0-5460,这表示这个主节点负责存储哪一部分数据,Redis集群把数据分成了16384份,每个主节点管理一部分。

通过cluster nodes命令,你就能清晰地看到集群的完整成员列表、每个节点的角色、主从关系以及健康状况。

Redis集群成员怎么查,怎么看它们的状态和情况,有啥简单方法吗

查看Redis服务器的信息输出

除了主动用命令查询,每个Redis节点自己也会不断输出状态信息,你可以通过查看Redis的日志文件或者使用info命令来获取。

在连接上某个节点后,输入:

redis-cli -c -h 127.0.0.1 -p 7001 info replication

这个命令原本是用于查看主从复制信息的,但在集群模式下,它会显示当前节点在集群中的角色以及它连接的其他节点信息,在一个从节点上执行,你会看到它报告自己是slave,并显示其主节点的地址和同步状态。

Redis的日志文件(通常位于/var/log/redis/或你配置的路径下)会记录集群的重要事件,比如有节点加入、节点失效、故障转移发生等,当出现问题时,查看日志是定位原因的最有效方式。

总结一下简单方法

对于日常检查,你只需要记住两个命令:

  1. 快速健康检查:用 redis-cli -c -h [IP] -p [端口] cluster info,重点看第一行cluster_state是不是ok
  2. 查看成员详情:用 redis-cli -c -h [IP] -p [端口] cluster nodes,查看所有节点的列表、角色和主从关系。

这两种方法直接利用了Redis自身的功能,不需要安装任何额外工具,是管理和监控Redis集群最基本、最可靠的手段,虽然输出是文本格式,但信息非常全面,熟练之后就能快速掌握集群的实时状态。