每当我尝试使用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的连接。
1条答案
按热度按时间nue99wik1#
我也犯了同样的错误。如果我检查了打开的端口,看起来6379是打开的,但无法连接。
我建议检查防火墙,然后打开那里的端口。
ufw允许6379