在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