比如我有两个实例,每个实例8192个slot,若有3个实例,每个实例5461个slot吗?那这样的话扩容的时候不是所有的数据都要迁移?
具体的分配算法是怎么样的呢?
如果你用的是 Redis cluster模式,那么至少需要6个Redis服务,分别为 主 主 主 从 从 从。
默认情况下 slot 是平均分配到 3个 主实例上。
如果需要扩容的话,新redis实例服务加入集群后,需要进行重新分片。
从 3个主实例上迁移若干 数量尽量相同的、连续的 slot 至新的redis主实例上。从而达成所有主实例 slot数量 大致相同。
具体可参考 http://www.redis.cn/topics/cluster-tutorial.html
多谢
总共16384个slot(不论节点数量),默认平均分配,也可以通过命令行自定义槽分配。
楼上说的对,不过redis cluster很不友好,推荐用codis