一,在redis開發中遇到下面的錯誤
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to host XXXX:6379 at redis.clients.jedis.Connection.connect(Connection.java:204) at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:100) at redis.clients.jedis.Connection.sendCommand(Connection.java:125) at redis.clients.jedis.Connection.sendCommand(Connection.java:120) at redis.clients.jedis.BinaryClient.multi(BinaryClient.java:523) at redis.clients.jedis.BinaryJedis.multi(BinaryJedis.java:1877) at com.redis.TestTX.main(TestTX.java:19) Caused by: java.net.SocketTimeoutException: connect timed out at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at redis.clients.jedis.Connection.connect(Connection.java:181) ... 6 more
二,解決辦法
1)修改配置文件
注釋掉bind,protected-mode為no
2)查看遠程服務器的防火牆狀態
systemctl status firewalld
防火牆為開啟狀態;
3)按照步驟執行一下命令
//查看防火牆狀態
firewall-cmd --state
//開放6379端口
firewall-cmd --permanent --add-port=6379/tcp
//查看端口,執行
firewall-cmd --permanent --query-port=6379/tcp
firewall-cmd --permanent --list-ports
//重啟防火牆
firewall-cmd --reload
4)重啟redis
redis-cli -p 6379 shutdown
redis-server /opt/redis/back_config/redis.conf
注釋:back_config是我存放redis.conf的地方,請根據自己的實際情況執行
5)測試一下連接是否成功
Jedis jedis = new Jedis("IP",6379); System.out.println(jedis.ping());
問題解決。