環境說明:
redis服務器系統:ubuntu ip 192.168.10.9 port 6379 兩台電腦:一個作為專門的服務器,一個是開發環境,以下一頓操作皆基於開發環境。
就這樣的簡單的代碼連接redis服務器
import redis.clients.jedis.Jedis; public class Test { public static void main(String[] args) { Jedis jedis = new Jedis("192.168.10.9"); jedis.auth("ldd"); jedis.set("age", "1"); System.out.println(jedis.get("age")); } }
但是卻出現了下面的異常:
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out at redis.clients.jedis.Protocol.process(Protocol.java:79) at redis.clients.jedis.Protocol.read(Protocol.java:131) at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:162) at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:72) at redis.clients.jedis.Connection.sendCommand(Connection.java:79) at redis.clients.jedis.Connection.sendCommand(Connection.java:75) at redis.clients.jedis.BinaryClient.auth(BinaryClient.java:499) at redis.clients.jedis.Jedis.auth(Jedis.java:1963) at testfinal.Test.main(Test.java:8) Caused by: java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.net.SocketInputStream.read(SocketInputStream.java:170) at java.net.SocketInputStream.read(SocketInputStream.java:141) at java.net.SocketInputStream.read(SocketInputStream.java:127) at redis.clients.util.RedisInputStream.fill(RedisInputStream.java:109) at redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:45) at redis.clients.jedis.Protocol.process(Protocol.java:64) ... 8 more
重點是:用命令行客戶端就能正常連接。PS: 同一個電腦。
真的,需要研究一下原因。
不知道有沒有知道的朋友可以指點一二。
百度一下,有的說需要將超時時常設置長一點,但是我設置成100000也沒用。還是會報錯。錯誤這里沒有貼。
換成windows系統,便可正常執行。看來跟mac本身有關呀。
折騰了幾天。
真是醉了。
終於,找到了原因:
我的電腦開了代理。導致網絡不行。
吐了一口老血,漲了一點教訓。
不過找到原因了,很開心。