首页/数据/Redis 进阶速查/CLUSTER ADDSLOTS:分配槽位

CLUSTER ADDSLOTS:分配槽位

CLUSTER ADDSLOTS slot... 把未分配的槽指派给当前节点;只能指派无人认领的槽,接管他人槽要先用 SETSLOT 迁移流程。

Redis 进阶速查数据更新于 2026-10-13

把槽指派给节点

CLUSTER ADDSLOTS slot... 把尚未被任何节点认领的槽指派给当前节点,是手工搭建集群时分配键空间的命令。它只能处理无主槽:若想把其他节点正在负责的槽接过来,必须走迁移流程,先做状态标记再搬数据,直接添加会被拒绝。在全部 16384 个槽分配完毕之前,集群状态会持续显示为 fail。

基本信息

用法CLUSTER ADDSLOTS <槽编号> [槽编号 ...]
约束只能指派当前无主的槽
批量方式7.0 起可用按区间分配的命令一次给一段
校验方式CLUSTER INFO 查看槽覆盖是否完整
常见划分三主节点按三段区间平均分配

典型使用场景

  • 手工搭建三主三从集群时给每个主节点划分槽区间
  • 从备份恢复拓扑后重新指派槽,让集群回到可服务状态
  • 排查集群状态长期为 fail,确认是否还有槽无人认领
  • 新增主节点入群后为它追加槽区间
  • 演练环境中重建一套小集群做功能验证

分配示例

分配示例
redis-cli -p 7000 CLUSTER ADDSLOTS $(seq 0 5460)      # 第一个主节点承担前段槽
redis-cli -p 7001 CLUSTER ADDSLOTS $(seq 5461 10922)   # 第二个主节点承担中段槽
redis-cli -p 7002 CLUSTER ADDSLOTS $(seq 10923 16383)  # 第三个主节点承担后段槽
redis-cli -p 7000 CLUSTER INFO | grep -E 'cluster_state|cluster_slots_assigned'  # 核对是否满 16384

状态判读

观察项含义正常表现
已分配槽数当前被认领的槽总数达到 16384 才算完整
集群状态整体可用标识全部分配完并收敛后变为 ok
槽覆盖是否存在无主或重叠每个槽恰好归属一个主节点
命令返回分配是否成功已占用时会整体报错而非部分成功
手工建集群时常见的划分方式是三段平均分配:前段、中段、后段各给一个主节点,随后再用从节点跟随对应主节点。
分配完成后集群状态可能仍为 fail,这是中间态,等全部槽有归属、拓扑收敛后才转为 ok,不必在这个阶段反复重试命令。

易错点

  • 对已被占用的槽执行分配,命令整体失败,误以为只是个别槽有问题
  • 槽没分配完就把流量切过来,客户端持续收到集群不可用的报错
  • 用超长参数一次性分配大量槽,命令长度或执行时间超出预期,脚本卡住
  • 把槽分配与数据迁移混为一谈:接管他人槽需要完整迁移流程,直接添加会被拒绝

数据来源与参考

  • Redis 官方文档:CLUSTER ADDSLOTS / ADDSLOTSRANGE 命令
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌