public JedisPool getReadJedisPool() { // get from jedisPoolsMap.values() except // jedisSentinelPool.getCurrentHostMaster() return getReadJedisPool(jedisSentinelPool.getCurrentHostMaster()); }
@Override public void run() { Jedis jedis = null; try { jedis = jedisPool.getResource(); jedis.set(SLAVE_CHEKER_KEY,SLAVE_CHEKER_VAL); } catch (Exception e) { if(e instanceof JedisDataException && e.getMessage().contains("READONLY")){ logger.warn("JedisDataException happend error:{} and will re-init jedisPool" ,e.getMessage()); //重新初始化jedisPool synchronized (jedisPool) { jedisPool.destroy(); jedisPool = new JedisSentinelPool(masterName, sentinels, jedisPoolConfig, timeout, password, database,clientName); logger.info("jedisPool re-init ok,currentHostMaster is:{}:{}" ,jedisPool.getCurrentHostMaster().getHost(),jedisPool.getCurrentHostMaster().getPort()); } } }finally { try {jedis.close();} catch (Exception e2) {} } } }, 1, 1, TimeUnit.MINUTES);
try { host = jedisSentinelPool.getCurrentHostMaster().getHost(); port = jedisSentinelPool.getCurrentHostMaster().getPort(); System.out.println(host + ":" + port); host = jedisSentinelPool.getCurrentHostMaster().getHost(); port = jedisSentinelPool.getCurrentHostMaster().getPort(); System.out.println(host + ":" + port);
/** * redis 主从测试 */ @Test public void sentinelTest() { Set<String> sentinels = new HashSet<String>(); sentinels.add(new HostAndPort("192.168.46.137", 26376).toString()); sentinels.add(new HostAndPort("192.168.46.137", 26377).toString()); sentinels.add(new HostAndPort("192.168.46.137", 26378).toString()); sentinels.add(new HostAndPort("192.168.46.137", 26379).toString()); JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster", sentinels, "123456"); System.out.println("Current master: " + sentinelPool.getCurrentHostMaster().toString()); Jedis master = sentinelPool.getResource(); master.set("username","jager"); System.out.println(master.get("username")); sentinelPool.close(); sentinelPool.destroy(); }