Java Jedis连接Redis数据库时抛出异常 connect timed out

我的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();
    }
复制代码

你可能感兴趣的:(数据库,java,操作系统)