Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当节点死亡时,如何使用java客户端连接Redis群集_Java_Redis_Jedis - Fatal编程技术网

当节点死亡时,如何使用java客户端连接Redis群集

当节点死亡时,如何使用java客户端连接Redis群集,java,redis,jedis,Java,Redis,Jedis,我有一个Redis集群,其中有一个主机(ip:192.168.56.101)和两个从机(ip:192.168.56.102、192.168.56.103),我使用绝地连接到主机读写数据 JedisPool pool = new JedisPool(new JedisPoolConfig(), "192.168.56.101"); 有一天,我的主节点死了,所以绝地无法连接到集群。 你能帮我一下吗,如果主机连接失效,如何连接集群? 谢谢需要为集群上的每个节点安装Sentinel。哨兵负责故障

我有一个Redis集群,其中有一个主机(ip:192.168.56.101)和两个从机(ip:192.168.56.102、192.168.56.103),我使用绝地连接到主机读写数据

JedisPool pool = new JedisPool(new JedisPoolConfig(), "192.168.56.101");   
有一天,我的主节点死了,所以绝地无法连接到集群。 你能帮我一下吗,如果主机连接失效,如何连接集群?
谢谢

需要为集群上的每个节点安装Sentinel。哨兵负责故障切换。有关哨兵的更多信息

其基本思想是,当其中一个redis节点宕机时,redis哨兵相互协调,并将任何从属节点升级为主节点。 下面的示例代码应该可以工作

JedisSentinelPool运行后台轮询线程以获取pool.getResource()将返回的主节点

JedisSentinelPool=新的JedisSentinelPool(字符串主名,设置哨兵);
绝地=零;
试一试{
jedis=pool.getResource();
}捕获(例外e){
//日志异常
}最后{
返回资源池(绝地);
}
JedisSentinelPool pool = new JedisSentinelPool(String masterName, Set<String> sentinels);
Jedis jedis = null;
try{
   jedis = pool.getResource();
} catch(Exception e){ 
   //log exception
} finally {
  pool.returnResource(jedis);
}