在集群添加或删除新节点时,redis集群如何重新分配已存在的密钥?

时间:2019-10-17 02:27:14

标签: redis

我已经从redis网站上阅读了文档,这就是它描述分片的方式:

'

Redis群集中有16384个哈希槽,要计算给定密钥的哈希槽,我们只需对密钥的CRC16取模16384。

Redis群集中的每个节点都负责哈希槽的子集,因此,例如,您可能有一个包含3个节点的群集,其中:

节点A包含从0到5500的哈希槽。 节点B包含从5501到11000的哈希槽。 节点C包含从11001到16383的哈希槽。 这样可以轻松添加和删除集群中的节点。 例如,如果要添加新节点D,则需要将一些哈希槽从节点A,B,C移至D。类似地,如果要从群集中删除节点A,则可以移动 。当节点A为空时,我可以将其完全从群集中删除。

'

首先,我加粗了令我困惑的地方。添加节点时,redis要求重新放入A,B,C中的现有密钥并将其分配到A,B,C,D中。

此重新分配操作如何工作?似乎并不容易,尤其是在服务仍在运行时。您的分片操作不应影响您的运行工作。

0 个答案:

没有答案