redis哈希槽为什么是16384

我们知道一致性哈希算法是对2的32次方取模,而哈希槽是对2的14次方取模

✏️ Redis作者认为这样做不太值得;并且一般情况下一个redis集群不会有超过1000个master节点,所以16k的槽位是个比较合适的选择。

Redis作者的回答在这里:why redis-cluster use 16384 slots? · Issue #2576 · redis/redis

图片[1]-redis哈希槽为什么是16384-不念博客

总结起来主要有以下因素

  • Redis节点间通信时,心跳包会携带节点的所有槽信息,它能以幂等方式来更新配置。如果采用 16384 个插槽,占空间 2KB (16384/8);如果采用 65536 个插槽,占空间 8KB (65536/8)。
  • Redis Cluster 不太可能扩展到超过 1000 个主节点,太多可能导致网络拥堵。
  • 16384 个插槽范围比较合适,当集群扩展到1000个节点时,也能确保每个master节点有足够的插槽

这也就是为什么哈希槽的数量是16384了!

© 版权声明
THE END