redis Jedis问题-“无法连接到解析为DNS名称的任何主机,”

rjee0c15  于 2023-02-28  发布在  Redis
关注(0)|答案(1)|浏览(910)

每当我尝试使用Jedis从我的Java应用程序连接到我的Redis服务器时,我得到JedisConnectionException: Failed to connect to any host resolved for DNS name. Java应用程序与Redis服务器运行在同一台机器上。
当我使用systemctl检查Redis服务器的状态时,它是在线的,运行没有任何问题。我还通过Linux机器上的命令行终端连接到Redis客户端,验证并执行PING,其中返回PONG以确保Redis正在运行。

Redis配置

我在redis.conf中取消了bind和requirepass的注解,如下所示(当然,不是我的整个配置):

bind 127.0.0.1
requirepass mypassword
port 6379

这是我正在使用的代码:

private void setupRedis(RedisCredentials credentials) {
    final GenericObjectPoolConfig<Jedis> poolConfig = new JedisPoolConfig();
    poolConfig.setMaxIdle(0);

    Jedis jedis;
    try (JedisPool pool = new JedisPool(poolConfig, credentials.getIp(), credentials.getPort())) { 
        jedis = pool.getResource();
    }

    jedis.auth(credentials.getPassword());
    jedis.connect();
    log.info("Redis connection was established.")
}

我对Redis的工作还是个新手,所以我不确定在我的帖子里应该包含多少信息。所有的帮助都是非常感谢的!

努力

我多次尝试上面提供的以下代码。我还尝试重新启动Redis服务器并再次运行代码,但没有成功尝试。

预期发生

应用程序记录“*Redis连接已建立 *”,并且在此过程中没有收到任何错误。

结果

控制台记录了redis.clients.jedis.exceptions.JedisConnectionException: Failed to connect to any host resolved for DNS name,因此应用程序显然无法建立到Redis的连接。

nue99wik

nue99wik1#

我也犯了同样的错误。如果我检查了打开的端口,看起来6379是打开的,但无法连接。
我建议检查防火墙,然后打开那里的端口。
ufw允许6379

相关问题