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 |
自己指定从属关系 |
✅完全可控 |
浙公网安备 33010602011771号