1.集群概念:
由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Redis的集群,其作用是提供在多个Redis节点间共享数据的程序集。Redis集群可以支持多个Master
2.槽位slot:
集群的密钥空间被分成==16384个槽==,有效地设置了16384个主节点的集群大小上限(但是,建议的最大节点大小约为1000个节点)。
集群中的每个主节点处理16384个哈希槽的一个子集。当没有集群重新配置正在进行时(即哈希槽从一个节点移动到另一个节点),集群是稳定的。当集群稳定时,单个哈希槽将由单个节点提供服务(但是,服务节点可以有一个或多个副本,在网络分裂或故障的情况下替换它,并且可以用于扩展读取陈旧数据是可接受的操作)。
edis集群没有使用一致性hash,而是引入了哈希槽的概念。Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽。集群的每个节点负责一部分hash槽。
3.常用命令:
cluster-replicas 1 : 表示为每一个Master创建一个Slave节点。
info replication: 查看当前链接容器的信息。
cluster info: 查看集群的环境信息。
cluster nodes: 查看集群的拓扑图。
参数-c: 优化路由,防止路由失效,然后再对Redis集群set/get读写操作。
cluster keyslot 键名称: 查看某个键Key该属于对应的槽位值。
CLUSTER FAILOVER: 节点从属调整,恢复至故障前。
cluster add-node: 新增集群节点。redis-cli --cluster add-node 172.18.0.7:6387 172.18.0.11:6381:将新增的6387节点加入到原集群。
cluster check IP地址:端口号: 检查集群情况,cluster check 172.18.0.11:6381:检查链接6381的集群情况。
cluster reshard IP地址:端口号: 重新分派槽号.
cluster-master-id: 分配节点。
cluster del-node IP地址:端口号 节点ID: 删除节点。
不在同一个slot槽位下的键值无法使用mset、mget等多键操作 。
可以通过{}来定义同一个组的概念,使key中{}内相同内容的键值对放到一个slot槽位去,mset k1{x} 1 k2{x} 2 k3{x} 3:使用{}来定义同一个组,批量设置值。
cluster-require-full-coverage yes: 默认值是yes , 即需要集群完整性,才对外提供服务 。如果集群不完整的话也需要对外提供服务,需要将该参数设置为no ,挂了的小集群不能使用,但是其他的小集群仍然可以对外提供服务。
CLUSTER COUNTKEYSINSLOT 槽位数字编号: 槽位是否被占用
结果: 1 表示该槽位被占用 ,0 表示该槽位没占用。
CLUSTER KEYSLOT 键名称: 查看键存放在哪一个槽位上。
CLUSTER SLOTS : 查看集群中各个节点的slot区间