个人redis是部署在VM虚拟机里面的CentOS里面,在使用物理机上的使用Java代码进行redis数据库链接操做的时候,运行代码抛出 connect timed out
异常。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.lpush("JavaList","bbb","ccc","ddd");
jedis.close();
}
复制代码
先检查了下输入的redis服务器IP没问题,使用的是redis默认的6379端口,因此实例化Jedis的时候就没有填写端口号。bash
在检查Linux服务器的时候发现Linux的防火墙没有管理,致使物理机没法访问redis服务器。服务器
如下是解决办法:加密
打开配置,将bind 127.0.0.1
注释掉(最前面加个 #)spa
缘由:bind 127.0.0.1
是只容许本机访问,就是只容许Linux虚拟机本身访问,而咱们要用本机去远程访问,显然是不行的。code
不一样的Centos版本命令不同,个人是Centos6.4,用/etc/init.d/iptables stop
关闭(CentOS 7使用 systemctl stop firewalld
关闭防火墙 ),重启Redis服务,再运行一下Java程序,正常执行。ip
若是你设置的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();
}
复制代码