1. 程式人生 > 其它 >IDEA通過Jedis操作Linux上的Redis;Failed to connect to any host resolved for DNS name問題

IDEA通過Jedis操作Linux上的Redis;Failed to connect to any host resolved for DNS name問題

testPing.java

public class testPing {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("Redis節點所在的機器的IP",6379);
        System.out.println(jedis.ping());
        System.out.println(jedis.keys("*"));
    }
}

出現以下錯誤:

Failed to connect to any host resolved for DNS name.

Suppressed: java.net.SocketTimeoutException: connect timed out

首先檢視Jedis類的構造方法:

理解建構函式中引數host和port的含義。

host為Redis節點所在的機器的IP,如果Redis安裝在Liunx上的話,就填Linux機器的IP地址。

如何獲取Linux的ip地址?

ip a

inet後面的就是Linux的IP地址。

port為Redis節點的埠,預設6379(Redis作者喜歡的一個女星的名字鍵盤縮寫)。

想要成功遠端連線Linux上的Redis,首先對redis.conf檔案進行修改。

也可以不註釋bind,在下面加上你訪問機的ip

最後,在Linux機上的防火牆開啟6379埠。

firewall-cmd --query-port=6379
/tcp #檢視埠6379是否開啟 #如果返回yes則代表已開啟 firewall-cmd --zone=public --add-port=6379/tcp --permanent #開啟6379埠 firewall-cmd --reload #過載防火牆 firewall-cmd --query-port=6379/tcp #再次檢視埠6379是否開啟 firewall-cmd --list-ports #檢視已經開啟的埠,應該會返回3306/tcp 6379/tcp

以上操作都完成後,再次執行testPing.java

PONG代表連線成功,k1,k2是我的redis中已存在的兩個鍵