/** * Creates {@link JedisSentinelPool}. * * @return * @since 1.4 */ protected Pool<Jedis> createRedisSentinelPool() { Set<String> hostAndPorts = redisServers .stream() .map(redisNode -> new HostAndPort(redisNode.host, redisNode.port).toString()) .collect(Collectors.toSet()); return new JedisSentinelPool(sentinelMaster, hostAndPorts, poolConfig, getShardInfo().getSoTimeout(), getShardInfo().getPassword()); }
private void initPool(List<HostAndPort> masters) { if (!equals(currentHostMasters, masters)) { StringBuffer sb = new StringBuffer(); for (HostAndPort master : masters) { sb.append(master.toString()); sb.append(" "); } log.info("Created ShardedJedisPool to master at [" + sb.toString() + "]"); List<JedisShardInfo> shardMasters = makeShardInfoList(masters); initPool(poolConfig, new ShardedJedisFactory(shardMasters, Hashing.MURMUR_HASH, null)); currentHostMasters = masters; } }
/** * 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(); }
/** * Creates {@link JedisSentinelPool}. * * @return * @since 1.4 */ protected Pool<Jedis> createRedisSentinelPool() { Set<String> hostAndPorts = redisServers .stream() .map(redisNode -> new HostAndPort(redisNode.host, redisNode.port).toString()) .collect(Collectors.toSet()); return new JedisSentinelPool(sentinelMaster, hostAndPorts, poolConfig, getShardInfo().getSoTimeout(), getShardInfo().getPassword()); }
private void initPool(List<HostAndPort> masters) { if (!equals(currentHostMasters, masters)) { StringBuffer sb = new StringBuffer(); for (HostAndPort master : masters) { sb.append(master.toString()); sb.append(" "); } LOGGER.logMessage(LogLevel.INFO, "Created ShardedJedisPool to master at [" + sb.toString() + "]"); List<JedisShardInfo> shardMasters = makeShardInfoList(masters); initPool(poolConfig, new ShardedJedisFactory(shardMasters, Hashing.MURMUR_HASH, null)); currentHostMasters = masters; } }
private List<JedisShardInfo> makeShardInfoList(List<HostAndPort> masters) { List<JedisShardInfo> shardMasters = new ArrayList<JedisShardInfo>(); for (HostAndPort master : masters) { String masterName = masterInfoMap.get(master.toString()); if (StringUtil.isBlank(masterName)) { throw new RuntimeException("没有找到" + master.toString() + "对应的主备masterName"); } ShardSentinelConfig shardSentinelConfig = totalMasterConfig .get(masterName); //读出主服务器对应的配置项 JedisConfig jedisConfig = getJedisConfig(shardSentinelConfig, master.getHost(), master.getPort()); //根据主服务器的配置项和主从所有服务器列表创建 TinyJedisShardInfo jedisShardInfo = new TinyJedisShardInfo( jedisConfig.getHost(), jedisConfig.getPort(), jedisConfig.getTimeout(), shardSentinelConfig.getJedisConfigList()); //设置主服务器密码 jedisShardInfo.setPassword(jedisConfig.getPassword()); shardMasters.add(jedisShardInfo); } return shardMasters; }
sentinels.add(new HostAndPort("192.168.19.131", 26379).toString()); sentinels.add("192.168.19.131:26380");
masterMap.put(masterName, master); masterInfoMap .put(master.toString(), masterName); fetched = true; jedis.disconnect();