在Redis集群中有一个哈希槽的概念,一共有2的14次方个插槽即16384,默认情况下,每个节点均分这16384个插槽,比如:

节点 A (6381)包含 0 到 5499号哈希槽.
节点 B (6382)包含5500 到 10999 号哈希槽.
节点 C (6383)包含11000 到 16383号哈希槽.

Redis中hash槽的算法采用的是crc16,16位需要2的16次方个插槽即65535,所以就会有这个疑问,也可能是面试的问题之一。

以下解释Redis插槽为什么是16384个

1. Redis集群中,在发送心跳包的时候16384插槽需要2k的消息,65535插槽需要8k的消息。

2. Redis集群中,最多有1000个节点,16384插槽教65535插槽可以更好的分配均匀到每个节点。

计算方法

16384/8/1024=2k

65535/8/1024=8k