Jedis連接搭建在阿里雲服務器上的Redis,基於Linux(CentOS7)
現象
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to host 127.0.0.1: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.ping(BinaryClient.java:113)
at redis.clients.jedis.BinaryJedis.ping(BinaryJedis.java:188)
at com.yang.test.TestPing.main(TestPing.java:10)
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
產生原因
- 機器之間網絡沒連通
- ip和端口號不正確
- 虛擬機中防火牆的原因
- redis.conf 中bind 127.0.0.1 未用#注釋掉
注:由於redis本身默認處於保護模式,redis.conf注釋掉bind 127.0.0.1,會產生安全問題
解決:
- 將protected-mode yes中yes改為no
- 設置連接密碼,以下采用的是第二種
解決方法
1. 將Jedis連接的IP地址改為服務器公網IP
2. 修改redis.conf配置文件,設置redis訪問密碼
3. 退出redis-server
3. 打開redis.conf,注釋掉 bind 127.0.0.1,意味着所有客戶端訪問都可訪問,相當於 bind 0.0.0.0
4. 重啟redis-server
5. 連接redis-cli ,ping測試是否,連接成功
6. 阿里雲服務器配置安全組
7. 防火牆開放6379端口,不然無法訪問