面试题:为什么redis集群的最大槽数是16384个?

redis作者在github上给出了原因,地址https://github.com/antirez/redis/issues/2576
在这里插入图片描述
1、普通心跳数据包携带节点的完整配置,该配置可以用旧配置以幂等方式替换,以便更新旧配置。这意味着它们包含原始形式的节点的槽配置,16k的槽配置需要使用2k内存空间,但是使用65k槽将使用8k的内存空间。

2、同时,由于其他设计折衷,Redis集群不可能扩展到超过1000个节点。

因此,16k是比较合适的,可以确保每个主设备有足够的槽,最大为1000个。redis的node配置信息通过位图存储传输的,传输前有一个压缩过程,压缩比跟槽个数和节点数有很大关系.
槽数量/节点数, 当这个N越大,压缩比就越小。

猜你喜欢

转载自blog.csdn.net/xingxincsdn/article/details/102670495