redis集群数据结构
clusterNode结构保存了一个节点的状态,比如节点的创建时间,名称。负责处理哪些槽(槽是redis集群的一个最重要的一个概念,后边会讲到)
clusterLink结构保存了连接节点所需要的信息,比如套接字描述符,输入缓存区和输出缓冲区,主要是用于连接其他节点。
每个节点都保存着一个clusterState结构。这个结构记录了在当前结点的视角下,集群的状态,集群所包含的节点等信息
槽指派
redis 集群通过分片的方式保存数据库中的键值对:集群的整个数据库被分为16384个槽(slot),数据库中每个键都属于这16384个槽的其中一个,集群中的每个节点负责0个或者最多16384个槽。
怎么计算键key属于哪个槽?
节点使用以下方法计算给定的键key属于哪个槽:CRC16(key) & 16383 CRC16(key) 计算键key的CRC16校验和。& 16383 计算出一个0至16383之间的整数作为key的槽号。