我的redis是部署在VM虚拟机里面的CentOS里面,在使用物理机上的使用Java代码进行redis数据库连接操作的时候,运行代码抛出 connect timed out
异常。
以下是编写的Java代码:
import redis.clients.jedis.Jedis;
/**
* @author Hiseico
* @create 2018-05-15 17:00
* @desc
**/
public class RedisDao {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.169.115");
jedis.lpush("JavaList","bbb","ccc","ddd");
jedis.close();
}
复制代码
先检查了下输入的redis服务器IP没问题,使用的是redis默认的6379端口,所以实例化Jedis的时候就没有填写端口号。
在检查Linux服务器的时候发现Linux的防火墙没有管理,导致物理机无法访问redis服务器。
以下是解决办法:
1.在Linux找到你的redis.conf配置文件,到该目录下使用命令:vi 配置文件名
打开配置,将bind 127.0.0.1
注释掉(最前面加个 #)
原因:bind 127.0.0.1
是只允许本机访问,就是只允许Linux虚拟机自己访问,而我们要用本机去远程访问,显然是不行的。
2.关闭防火墙
不同的Centos版本命令不一样,我的是Centos6.4,用/etc/init.d/iptables stop
关闭(CentOS 7使用 systemctl stop firewalld
关闭防火墙 ),重启Redis服务,再运行一下Java程序,正常执行。
3.设置redis登录密码
如果你设置的redis登录密码的话,需要在Java代码中添加密码,才能成功连接redis服务器。 已下是添加密码后的Java代码:
import redis.clients.jedis.Jedis;
/**
* @author Hiseico
* @create 2018-05-15 17:00
* @desc
**/
public class RedisDao {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.169.115");
//添加密码
jedis.auth("123456");
jedis.lpush("JavaList","bbb","ccc","ddd");
jedis.close();
}
复制代码