首页/数据/Redis 进阶速查/redis-cli --cluster create 创建集群

redis-cli --cluster create 创建集群

用 redis-cli --cluster create 一次部署多节点集群:按参数顺序每 N 个节点分配一主一从,--cluster-replicas 指定每个主节点的从节点数量。

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

cluster create 是什么

redis-cli --cluster create 是官方提供的集群初始化工具:把一组已经以集群模式启动、但还没有分配槽的实例一次性组织成一个可用集群。工具按命令行给出的节点顺序、结合 --cluster-replicas 指定的副本数划分主从关系,把 16384 个槽平均分配给主节点,然后通过节点间握手把拓扑广播出去。执行过程中会打印槽分配计划并要求确认,确认后各节点开始互相认识。

基本信息

命令形式redis-cli --cluster create ip1:port1 ip2:port2 ... --cluster-replicas 1
前提条件各节点已以 cluster-enabled yes 启动,且尚未分配槽
副本参数--cluster-replicas 1 表示每个主节点配一个从节点
节点顺序先列全部主节点再列从节点时更容易预测分配结果
最小规模3 个主节点才能容忍单主故障,生产建议 3 主 3 从起步

典型使用场景

  • 新环境初始化:一次性把六个实例组织成 3 主 3 从并完成槽分配
  • 重建集群:旧集群彻底不可用后按同样拓扑从零搭建,再从备份恢复数据
  • 测试环境快速搭集群验证客户端兼容性与多键限制
  • 扩容前的拓扑准备:先建好新节点,再用 reshard 从现有集群迁槽过来
  • 多套环境参数一致化:把创建命令固化进部署脚本,避免手工分配带来的差异

创建三主三从

创建三主三从
redis-cli --cluster create \
  10.0.0.11:7000 10.0.0.12:7000 10.0.0.13:7000 \
  10.0.0.11:7001 10.0.0.12:7001 10.0.0.13:7001 \
  --cluster-replicas 1
# 工具会打印主从与槽分配计划,输入 yes 确认
redis-cli --cluster check 10.0.0.11:7000      # 创建后体检
redis-cli -p 7000 CLUSTER INFO | grep cluster_state   # 期望 ok
redis-cli -p 7000 CLUSTER NODES | head -n 6   # 复核角色与槽区间

创建前后的检查项

阶段检查内容失败表现
创建前各节点已启动、未分配槽、端口互通报节点已有数据或无法连接
创建前集群总线端口 p+10000 已放行节点握手失败,拓扑不完整
创建中确认槽分配计划是否均匀主节点槽数差异过大,需重新规划
创建后cluster_state 为 ok 且槽全覆盖存在未分配槽,集群整体不可写
主从是怎么分配的:工具按节点在命令行中出现的顺序处理,先确定主节点,再把后续节点按副本数分给它们。节点较多时自己先画一张分布表再执行,比事后用 CLUSTER NODES 反推拓扑更可靠;创建完成后也可以继续用 CLUSTER MEET 或 --cluster add-node 调整。
创建命令只需执行一次:重复执行会因为节点已经分配了槽而失败,更糟的情况是误把新节点写进命令导致拓扑混乱。创建失败后应先查看当前实际拓扑再决定重试还是清理,不要盲目重跑命令。

易错点

  • 节点顺序与副本数不匹配,创建出的拓扑与预期不符,例如同一台机器的主从配对在一起,整机故障时主从同时失效
  • 对已经有数据的实例执行创建,集群状态与数据文件不兼容会直接报错,需要先清空数据目录或使用空实例
  • 忘记放行集群总线端口 p+10000,创建过程看似成功但节点之间无法握手,集群长时间处于 fail 状态
  • 创建后未做体检:槽没有全部分配时集群整体不可写,必须用 CLUSTER INFO 与 --cluster check 确认槽覆盖与角色正确

数据来源与参考

  • Redis 官方文档:创建集群(cluster create)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌