Redis 5.0集群如何查看槽位分配_通过CLUSTER SLOTS精准排查数据分布

千磊君_1749

千磊君_1749

2026-04-09

938人浏览

原创

cluster slots 直接列出每个连续槽段的起止编号、负责主节点及所有从节点,是唯一实时完整展示槽与节点映射的原生命令;槽段须连续无重叠无遗漏,否则集群状态为fail。

redis 5.0集群如何查看槽位分配_通过cluster slots精准排查数据分布

CLUSTER SLOTS 返回结果怎么看

CLUSTER SLOTS 是唯一能实时、完整展示槽位与节点映射关系的原生命令。它不返回哈希值或统计摘要,而是直接列出每个槽段(slot range)由哪个节点负责、哪些节点是其从节点。

执行后典型输出类似:

127.0.0.1:7000> cluster slots
1) 1) (integer) 0
   2) (integer) 5460
   3) 1) "192.168.1.101"
      2) (integer) 7000
      3) "a1b2c3d4e5f6..."  // 主节点 ID
   4) 1) "192.168.1.102"
      2) (integer) 7001
      3) "f7g8h9i0j1k2..."  // 从节点 ID

关键点:

  • 第一层列表每一项代表一个「连续槽段」,不是单个槽;
  • 每段的起始/结束槽号是包含的(如 0 到 5460 共 5461 个槽);
  • 第三个元素是主节点信息(IP、端口、ID),第四个起是该主节点的所有从节点(可能为空);
  • 槽段之间不能重叠、不能遗漏,否则集群状态为 fail。

为什么不能只看 CLUSTER NODES 或 redis-cli --cluster check

CLUSTER NODES 只显示节点角色和连接状态,不体现槽归属;redis-cli --cluster check 会汇总槽总数并报错(如 FAIL: Slot 12345 is not covered),但不告诉你「谁该管它」或「谁多占了」。

真实排查场景中,你常需要确认:

  • 某个业务 key 实际落在哪个槽?用 crc16(key) % 16384 算出槽号后,得靠 CLUSTER SLOTS 定位到具体节点;
  • 扩容后新节点没分到槽?查输出里有没有以它为主节点的段;
  • 某节点宕机后槽是否被自动迁移?对比宕机前后的 CLUSTER SLOTS 输出,看对应槽段的主节点 ID 是否变更。

如何快速定位 key 对应的节点(不依赖客户端)

在任意集群节点上,用两步手动验证:

第一步:算槽号。例如 key 是 "user:1001",可用 Python 快速计算:

python3 -c "import binascii; print(binascii.crc_hqx(b'user:1001', 0) % 16384)"

第二步:查槽段。假设结果是 8237,执行 CLUSTER SLOTS,逐段比对起止范围,找到包含 8237 的那一项,第三元素的 IP 和端口就是目标节点。

注意:

  • 不要用 redis-cli -c 直接 get —— 它内部跳转是黑盒,无法确认是否真连到了负责该槽的节点;
  • 某些旧版客户端(如 Jedis 2.x)对槽迁移响应不及时,手动验证可绕过客户端缓存干扰;
  • 如果 CLUSTER SLOTS 中没有覆盖 8237 的段,集群已处于 fail 状态,所有写入都会失败。

常见误操作导致 CLUSTER SLOTS 异常

运维中最容易踩的坑不是命令不会用,而是「以为分配了,其实没生效」:

  • 执行了 CLUSTER ADDSLOTS 1000 1001 1002,但没在**所有节点**上同步执行 CLUSTER SETSLOT ... MIGRATING 或 IMPORTING —— 导致只有本节点认为自己管这些槽,其他节点不认;
  • 用 redis-cli --cluster reshard 迁移中途 Ctrl+C,迁移未完成且未回滚,CLUSTER SLOTS 显示源节点仍标有该槽段,但部分 key 已迁走,造成数据不一致;
  • 新增节点后只执行 CLUSTER MEET,忘了 CLUSTER REPLICATE <master-id></master-id> 或 CLUSTER ADDSLOTS —— 该节点在 CLUSTER SLOTS 中完全不出现,属于「幽灵节点」。

只要 CLUSTER SLOTS 输出里有一段槽没主节点,或者某段重复出现两次,集群就不可写。这个细节,比日志里的 warning 更值得盯紧。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4389

19

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.14

3915

11

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.02

7132

6

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

643

6

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

756

6

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

6882

6

redis缓存一般存些什么数据
redis缓存一般存些什么数据

redis缓存中存储的数据类型包括:字符串、哈希、列表、集合、有序集合、位图、地理空间数据和hyperloglog。这些数据类型适用于存储各种数据,从简单信息到复杂对象和地理位置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

1160

6

redis的8种数据类型有哪些
redis的8种数据类型有哪些

redis 提供 8 种数据类型:字符串(文本、数字、二进制)、哈希(键值对)、列表(有序集合)、集合(无序唯一元素)、有序集合(按分数排序)、地理空间(地理位置)、hyperloglog(估计大数据基数)和位图(位序列存储)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

1056

6

redis主要作用有哪些
redis主要作用有哪些

redis 的主要作用包括:1. 缓存数据,提高访问速度;2. 充当消息队列,实现消息传递;3. 存储各种数据类型,如字符串、散列和集合;4. 管理会话信息,确保可靠性和可用性;5. 限制请求速率,防止服务器超载等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

6078

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习