哈希槽

基本思想:
(1)一共有16384个槽,每台服务器分管其中的一部分
(2)插入一个数据的时候,先根据CRC16算法计算key对应的值,然后用该值对16384取余数(即CRC16(key) mod 16384),确定将数据放到哪个槽里面
(3)在增加节点的时候,之前的节点各自分出一些槽给新节点,对应的数据也一起迁出
(4)客户端可以向任何一个Redis节点发送请求,然后由节点将请求重定向到正确的节点上

为什么要选择的槽是16384个呢?
crc16会输出16bit的结果,可以看作是一个分布在0-2^16-1之间的数,redis的作者测试发现这个数对2^{14}求模的会将key在0-2^{14-1}之间分布得很均匀,因此选了这个值。

参考资料:
[1]https://www.cnblogs.com/abc-begin/p/8203613.html
[2]哈希算法:https://blog.csdn.net/tanggao1314/article/details/51457585

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容