Redis集群的搭建,我已经在前面文章介绍过了,这篇文章,就让我们来学习一下Redis的集群是如何实现的。
Redis最开始的集群搭建是依靠ZK的,但是在 3.0 之后版本支持redis-cluster集群。Redis-Cluster采用无中心结构,即每个节点保存数据和整个集群状态,每个节点都和其他所有 节点连接。
那么我们是如何知道,我们的数据保存在哪里的呢?这样的话,我们就需要了解另一个概念,槽。
Redis的集群里面有着一个槽(slots)的概念,他的大小是10的14次方(16384 ),每当我们向集群中set一个值的时候,我们就会通过 CRC16 算法得到一个值,然后再对16384 这个值取模,最后得到的值就是给他分配到值的槽的位置。同理,我们再读取数据的时候,也是通过这种方式获取的。
然后在集群创建的时候,我们的每个主节点就已经有了自己分配好的槽了(但是我还不知道他们初始化的时候是如何分配的槽,网上也没找到),但是只有主节点才有槽,所以,我们的集群中每个主节点,都必须要分配从节点&#x