怎么快速查Redis集群里到底有多少数据和节点的那些事儿
- 问答
- 2026-01-01 04:31:02
- 2
综合自Redis官方文档、多位运维工程师的社区经验分享以及常见的数据库管理实践)
怎么快速查Redis集群里到底有多少数据和节点的那些事儿
想知道Redis集群里到底存了多少东西,还有这个集群是怎么个结构,这事儿说简单也简单,说麻烦也麻烦,关键看你想知道得多细,咱们就分两块儿说:一是怎么看懂集群的“家底儿”(数据量),二是怎么摸清集群的“骨架”(节点信息)。
第一部分:快速摸清数据量
最简单、最直接的办法,就是用一个叫 INFO 的命令,你随便连上集群里的任何一个节点,敲入 INFO keyspace,回车,它就会给你返回类似这样的信息:
# Keyspace
db0:keys=1500000,expires=200,avg_ttl=1234567
db1:keys=500000,expires=50,avg_ttl=987654
这几行字意思很明白:

db0,db1表示的是不同的数据库编号(Redis默认有16个,从0到15)。keys=1500000就是说在db0这个数据库里,有150万个key。expires=200表示其中有200个key是设置了过期时间的。avg_ttl是这些设置了过期的key的平均存活时间,单位是毫秒。
你只要把每个db后面的 keys 数量加起来,就能得到这个节点上总共有多少个key。这里有个巨大的“坑”:Redis集群模式和你平时用的单机Redis不一样,在集群里,数据是分散在不同节点上的,每个节点只负责存储整个数据集的一部分。
你只连上一个节点执行 INFO keyspace,看到的只是这个节点自己管的那一小部分数据,不是全貌!要想知道整个集群的总数据量,你必须挨个连接集群里的每一个主节点,在每个节点上都执行一遍 INFO keyspace,然后把所有主节点上的key数量加起来才行,这事儿手动做起来挺蠢的,特别是节点多的时候,所以一般会写个小脚本自动去跑。
还有一个命令叫 DBSIZE,它直接返回当前数据库的key总量,比 INFO 命令的输出更简洁,但同样,它也只在当前节点上有效,查全集群数据量的麻烦劲儿和用 INFO 是一样的。
有人可能会想,有没有一个命令能直接告诉我整个集群的总key数?很遗憾,Redis官方没有提供这样的命令,因为要得到这个数,就必须去问所有节点,然后汇总,这个操作是有开销的,在大型集群里可能会对性能有影响。

第二部分:摸清节点的那些事儿
搞清楚集群由哪些节点组成,它们是什么角色,状态如何,这个同样重要,这时候就要用到集群的专用命令了。
最核心的命令是 CLUSTER NODES,你连上任意一个节点,执行这个命令,它会吐出一大串看起来有点乱的信息,别怕,我们一点点看,它列出了集群中所有节点的信息,每一行代表一个节点,格式大致是这样的:
e973c7997f1d6c6aae29e0d4d5c97c4f34a02f0e 192.168.1.101:6379@16379 myself,master - 0 1627800000000 1 connected 0-5460

我们挑关键的说:
168.1.101:6379:这是节点的IP地址和端口号。myself:这个标记表示你当前连接的就是这个节点,没有这个标记的就是其他节点。master或slave:这是节点的角色。“master”是主节点,负责读写和存储数据;“slave”是从节点,主要是备份主节点的数据,提供高可用性。connected:表示这个节点目前是连接正常的,如果出现fail之类的状态,说明这个节点可能出问题了。0-5460:这一部分极其重要!它叫做“哈希槽”(Slot)范围,Redis集群把所有的key分成了16384个槽位,这个节点负责管理从0号到5460号这些槽位,数据就是根据key的哈希值分配到不同槽位,再由不同的节点管理的,你可以通过这个知道数据大致是怎么分布的。
另一个有用的命令是 CLUSTER INFO,这个命令给你一个集群的整体健康状况摘要,它会返回类似下面的信息:
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_state:ok:集群状态是健康的,如果是fail,就意味着有主节点挂了而且没有从节点能顶上来,整个集群不可用了。cluster_slots_assigned:16384:已经分配出去的槽位数,健康的情况下这里必须是16384。cluster_slots_ok:16384:状态正常的槽位数,如果有节点故障,这个数可能会小于16384。cluster_known_nodes:6:集群已知的总节点数,包括主节点和从节点。cluster_size:3:这表示集群中“分片”的数量,其实就是主节点的数量,这里有3个主节点。
通过 CLUSTER NODES 和 CLUSTER INFO 这两个命令配合着看,你就能对集群的节点结构、健康状况、数据分片情况有一个非常清晰的了解。
总结一下
想快速查Redis集群的数据和节点:
- 查整个集群的总数据量(总key数):没有一键命令,得写脚本连接所有主节点,分别执行
INFO keyspace或DBSIZE,然后把结果相加。 - 查节点信息、集群结构:用
CLUSTER NODES看所有节点的详情和槽位分配,用CLUSTER INFO看集群的整体健康状态和概要信息。
这些东西虽然用命令行都能搞定,但确实有点不方便,所以市面上有很多图形化的管理工具(比如RedisInsight、一些云服务商提供的控制台),它们背后也是调用的这些命令,但帮你把结果整理得漂漂亮亮,一眼就能看明白,省去了手动操作的麻烦。
本文由盈壮于2026-01-01发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/72244.html
