【发布时间】:2022-01-04 04:32:06
【问题描述】:
最近我使用 redis 并使用 jedis。在 redis 版本 6 中,我们可以为哨兵设置所需的密码模式。我有 3 个工作哨兵,可以通过 redis-cli 连接和验证。但是使用 jedis,我无法连接到哨兵并出现此警告:
无法从运行@127.0.0.1:26379 的哨兵获取主地址。 原因:redis.clients.jedis.exceptions.JedisDataException: NOAUTH 需要身份验证.. 尝试下一个。
无法从运行@127.0.0.1:36379 的哨兵获取主地址。 原因:redis.clients.jedis.exceptions.JedisDataException: NOAUTH 需要身份验证.. 尝试下一个。
无法从运行@127.0.0.1:16379 的哨兵获取主地址。 原因:redis.clients.jedis.exceptions.JedisDataException: NOAUTH 需要身份验证.. 尝试下一个。
还有这个错误:
所有哨兵下线,无法确定 mymaster 主人在哪里 正在运行...
这是我的代码:
GenericObjectPoolConfig pc = new GenericObjectPoolConfig();
pc.setMinIdle(2);
pc.setMaxIdle(5);
pc.setMaxTotal(5);
JedisSentinelPool pool = new JedisSentinelPool(MASTER_NAME, sentinels, pc, 1000*10, PASSWORD);
Jedis jedis = null;
try {
printer("Fetching connection from pool");
jedis = pool.getResource();
printer("Authenticating...");
jedis.auth(PASSWORD);
printer("auth complete...");
Socket socket = jedis.getClient().getSocket();
printer("Connected to " + socket.getRemoteSocketAddress());
printer("Writing...");
jedis.set("java-key-999", "java-value-999");
printer("Reading...");
printer(jedis.get("java-key-999"));
} catch (JedisException e) {
printer("Connection error of some sort!");
printer(e.getMessage());
Thread.sleep(2 * 1000);
} finally {
if (jedis != null) {
jedis.close();
}
}
请帮忙,感谢您的阅读支持
【问题讨论】:
标签: redis jedis redis-sentinel