windows redis 集群搭建(三)
一、redis数据分片的原理 Redis 集群没有使用一致性hash, 而是引入了 哈希槽 的概念. Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽,举个例子,比如当前集群有3个节点,那么: 节点 A 包含 0 到 5500号哈希槽. 节点 B 包含5501 到 11000 号哈希槽. 节点 C 包含11001 到 16384号哈希槽. 这种结构很容易添加或者删除节点. 比如如果我想新添加个节点D, 我需要从节点 A, B, C中得部分槽到D上. 如果我像移除节点A,需要将A中得槽移到B和C节点上,然后将没有任何槽的A节点从集群中移除即可. 由于从一个节点将哈希槽移动到另一个节点并不会停止服务,所以无论添加删除或者改变某个节点的哈希槽的数量都不会造成集群不可用的状态. 另外一种情况,某一个主节点失效,比如上面的A节点失效,会造成 0 到 5500号槽点不可用, 由于redis支持主从模型的支持,我们在创建A主节点的时候创建a1从节点,即便一个主节点A失效,他的a1也会立马升为新的主节点继续服务,从而使集群可继续服务。 二、集群重新分片 集群的管理中,集群分片管理最为核心,是添加,移除集群的基础,我们优先介绍。 重新分片操作基本上就是将某些节点上的哈希槽移动到另外一些节点上面,