为什么Redis集群的最大槽数是16384?


一、为什么Redis集群的最大槽数是16384?

这里说到的Redis集群指的是Redis Cluster集群,它用了哈希槽(Hash Slot)来实现数据的分片,key查找的时候会通过CRC16算法取模后找到对应的Slot槽。(集群介绍可参考文章《Redis集群》

CRC16算法生成的hash值有16位,能生成2^16-1=65535个槽。

那为什么设置最大槽数是16384呢?主要有以下几点原因:

  • 占用内存小:16384对应2kb,而65535对应8kb(1kb=1024b,1b=8bit)
  • 集群设计:集群设计最多支持1000个分片,所以考虑到Slot槽均匀分配的Slot槽不至于太多或太少,所以16384是比较合适的
  • 2的倍数:通过位运算等简单算法可以提高计算效率

文章作者: GaryLee
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 GaryLee !
  目录