环境描述:
redis服务器是搭建在本地虚拟机里面的,使用的系统是linux的centos7。
IP地址为:192.168.60.128
jedis是在本地win7环境下的。
问题描述:
package org.knl.redis.client;
import redis.clients.jedis.Jedis;
public class RedisExample {
public static void main(String[] args) {
try{
Jedis jedis = new Jedis("192.168.60.128", 6379);
jedis.set("foo", "bar");
String value = jedis.get("foo");
System.out.println("Result:" + value);
} catch(Exception ex){
ex.printStackTrace();
}
}
}
通过执行以上代码,将会抛出以下异常:
redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect timed out
at redis.clients.jedis.Connection.connect(Connection.java:142)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:75)
at redis.clients.jedis.Connection.sendCommand(Connection.java:83)
at redis.clients.jedis.BinaryClient.set(BinaryClient.java:92)
at redis.clients.jedis.Client.set(Client.java:23)
at redis.clients.jedis.Jedis.set(Jedis.java:53)
at org.knl.redis.client.RedisExample.main(RedisExample.java:10)
问题原因:
由于linux防火墙没关导致jedis无法访问到redis。
解决方法:
关闭linux防火墙之后问题得到解决。
linux防火墙关闭方法:
①查看linux防火墙是否开启(命令:iptables -L)
以上状态表示防火墙为开启状态。
②关闭防火墙
service iptables stop
③再次查看防火墙是否开启(命令:iptables -L)
以上状态表示防火墙为关闭状态。
关闭linux防火墙之后,重新启动redis服务,执行应用程序,这个时候程序将正常执行。