最近我和redis一起工作,用jedis。在redis版本6中,我们可以为哨兵设置所需的密码模式。我有三个工作哨兵,可以通过红线连接和自动通过。但是使用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身份验证。再试一次。
这个错误是:
所有哨兵,无法确定我的主人在哪里运行.
这是我的代码:
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();
}
}请帮助,谢谢您的阅读支持。
发布于 2021-11-26 14:14:26
您的哨兵节点受到密码保护。您必须提供AUTH参数才能连接到哨兵节点。
更新:
您提供的密码充当主节点的密码。为了避免前哨节点的NOAUTH错误,您必须为哨兵节点提供密码。查找任何接受哨兵节点密码的构造函数。该参数通常命名为sentinelPassword。有几个这样的构造函数,其中最简单的是
JedisSentinelPool(String masterName, Set<String> sentinels, String password, String sentinelPassword)欢迎您寻找其他最适合您的构造函数。
https://stackoverflow.com/questions/70118886
复制相似问题