redis 3.0 引入的新功能。
然后去看了下现在 redis 已经是 6.x 了
逻辑
根据 CRC16
把 key 值分到 16383 个槽内。然后把若干个节点设置分别维护若干个槽。实现节点分布式。
缺点
- 不支持多 key 值操作(因为不同 key 值可能属于若干个节点)。
- 事务只支持单 key 事务
- 支持 0 库
集群搭建
三节点主从库。
只记录,未测试
0. redis.conf 相关 cluster 参数
cluster-enabled: 如果想在特定的Redis实例中启用Redis群集支持就设置为yes。 否则,实例通常作为独立实例启动。
cluster-config-file: 请注意,尽管有此选项的名称,但这不是用户可编辑的配置文件,而是Redis群集节点每次发生更改时自动保留群集配置(基本上为状态)的文件,以便能够 在启动时重新读取它。 该文件列出了群集中其他节点,它们的状态,持久变量等等。 由于某些消息的接收,通常会将此文件重写并刷新到磁盘上。
cluster-node-timeout: Redis群集节点可以不可用的最长时间,而不会将其视为失败。 如果主节点超过指定的时间不可达,它将由其从属设备进行故障切换。 此参数控制Redis群集中的其他重要事项。 值得注意的是,每个无法在指定时间内到达大多数主节点的节点将停止接受查询。
cluster-slave-validity-factor :如果设置为0,无论主设备和从设备之间的链路保持断开连接的时间长短,从设备都将尝试故障切换主设备。 如果该值为正值,则计算最大断开时间作为节点超时值乘以此选项提供的系数,如果该节点是从节点,则在主链路断开连接的时间超过指定的超时值时,它不会尝试启动故障切换。 例如,如果节点超时设置为5秒,并且有效因子设置为10,则与主设备断开连接超过50秒的从设备将不会尝试对其主设备进行故障切换。 请注意,如果没有从服务器节点能够对其进行故障转移,则任何非零值都可能导致Redis群集在主服务器出现故障后不可用。 在这种情况下,只有原始主节点重新加入集群时,集群才会返回可用。
cluster-migration-barrier:主设备将保持连接的最小从设备数量,以便另一个从设备迁移到不受任何从设备覆盖的主设备。有关更多信息,请参阅本教程中有关副本迁移的相应部分。
cluster-require-full-coverage:如果将其设置为yes,则默认情况下,如果key的空间的某个百分比未被任何节点覆盖,则集群停止接受写入。 如果该选项设置为no,则即使只处理关于keys子集的请求,群集仍将提供查询。
1. 子节点配置范例
1 | port 6379 //节点端口 |
2. 启动服务
略略略略😛
3. 各节点握手
登录其中一个节点,然后meet
所有节点
1 | cluster meet 192.168.2.123:6378 |
在操作完所有节点之后,可以通过 cluster nodes
获取所有节点信息
默认节点握手之后,是禁止读写
可以通过
cluster info
查看状态
4. 分配槽
1 | redis-cli -h 192.168.152.128 -p 6379 cluster addslots {0...5461} |
把 0 - 16383
个槽分配给三个节点
再次查看 cluster info
集群自动分配槽
https://www.cnblogs.com/leeSmall/p/8414687.html