如何在节点死亡时java客户端连接Redis集群

时间:2015-12-09 10:02:22

标签: java redis jedis

我有一个Redis集群,其中包含1个主服务器(ip:192.168.56.101)和2个从服务器(ip:192.168.56.102,192.168.56.103),我使用jedis连接到主服务器读写数据。

JedisPool pool = new JedisPool(new JedisPoolConfig(), "192.168.56.101");   

有一天,我的主节点死了,所以jedis无法连接到群集。 你可以帮助我,如果主机连接死了怎么连接群集? 谢谢

1 个答案:

答案 0 :(得分:0)

需要为群集上的每个节点安装Sentinels。 Sentinels负责故障转移。有关哨兵的更多信息,http://redis.io/topics/sentinel

基本思想是,当其中一个redis节点发生故障时,redis哨兵会相互协调并将任何一个从站升级为master。 以下示例代码应该可行。

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

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);
}