我就是奇迹

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Redis 会自动决定谁是主,谁是从

如果你不显式指定,在执行:

redis-cli --cluster create ... --cluster-replicas 1

时,Redis 会自动决定谁是主,谁是从,但不是完全随机的,它是按照一套内置策略来尽量平均地分配主从关系,比如:

 


 

 

🎯 默认规则(自动分配逻辑):

 

 

假设你输入了这 6 个节点:

redis-7000:7000
redis-7001:7001
redis-7002:7002
redis-7003:7003
redis-7004:7004
redis-7005:7005

并加了 --cluster-replicas 1

 

Redis 会选前 3 个当主节点,后 3 个作为从节点,并且 避免从库和主库在同一 IP 上(如在真实集群中)

 

默认配对结果会是:

主节点

对应从库

7000(主)

7003(从)

7001(主)

7004(从)

7002(主)

7005(从)

这个是 Redis 内部做了一个分配逻辑,比如:

 

  • 不让主从在同一台机器(如果有多个 IP/Host)

  • 尽量平均分配 slot(0-16383)

 

 


 

 

✅ 那我能不能“强制指定”谁是哪个主的从?

 

 

可以!Redis 提供了手动方式:

 

 

1️⃣ 创建集群时只指定主节点(不加 –replicas)

 

redis-cli --cluster create \
  redis-7000:7000 redis-7001:7001 redis-7002:7002

此时,你只建了 3 个主节点,没有从节点!

 

 

2️⃣ 然后手动添加从节点

 

 

比如让 7003 成为 7000 的从节点:

redis-cli --cluster add-node redis-7003:7003 redis-7000:7000 --cluster-slave --cluster-master-id <master-node-id>

你要先通过下面命令查出主节点 ID:

redis-cli -p 7000 cluster nodes

你就可以精确控制:

 

  • 谁是主

  • 谁跟随谁

 

 


 

 

✅ 结论总结:

 

方式

主从关系

是否可控

使用 --cluster-replicas

自动分配

✅可控数量,不可控具体从属关系

手动分配 --cluster-slave

自己指定从属关系

✅完全可控

 

 

posted on 2025-04-21 11:09  我就是奇迹  阅读(18)  评论(0)    收藏  举报