6、集群故障恢复
如果在运行过程中有一个机器宕机了,你遵循了一个节点一个服务器,中从分开。这样当前节点的从服务器就会顶替主服务器成为主服务器,以前的主服务器修好了重启也是从服务器。
-
关闭一个服务器
-
查看集群信息
7f5250c87ffd7c82b187878e3939be731d557deb 192.168.126.129:6379@16379 master,fail - 1648631325134 1648631322000 1 disconnected fe9b7bae11d2907b3c5f16e1e64d21311df1ee35 192.168.126.129:6389@16389 master - 0 1648631391000 7 connected 0-5460
说6379节点的服务器出问题了,6389 节点的服务器又变成了主节点
-
再打开服务器再查看集群信息,6379 节点变成了6389的从节点
7f5250c87ffd7c82b187878e3939be731d557deb 192.168.126.129:6379@16379 myself,slave fe9b7bae11d2907b3c5f16e1e64d21311df1ee35 0 1648632035000 7 connected
如果所有某一段插槽的主从节点都宕掉,redis服务是否还能继续?
如果某一段插槽的主从都挂掉,而 cluster-require-full-coverage
为yes ,那么 ,整个集群都挂掉
# cluster-require-full-coverage yes
如果某一段插槽的主从都挂掉,而 cluster-require-full-coverage
为no ,那么,该插槽数据全都不能使用,也无法存储。
redis.conf 中的参数 cluster-require-full-coverage
7、集群的 jedis 开发
public class JedisClusterTest {
public static void main(String[] args) {
Set<HostAndPort>set =new HashSet<HostAndPort>();
JedisCluster jedisCluster=new JedisCluster("192.168.31.211",6379);
jedisCluster.set("k1", "v1");
System.out.println(jedisCluster.get("k1"));
jedisCluster.close()
}
}
8、集群的好处和坏处
好处
- 实现扩容
- 分摊压力
- 无中心配置相对简单
劣势
- 多键操作是不被支持的
- 多键的Redis事务是不被支持的。lua脚本不被支持
- 由于集群方案出现较晚,很多公司已经采用了其他的集群方案,而代理或者客户端分片的方案想要迁移至redis cluster,需要整体迁移而不是逐步过渡,复杂度较大。