Java Jedis鏈接Redis數據庫時拋出異常 connect timed out

個人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服務器。服務器

如下是解決辦法:加密

1.在Linux找到你的redis.conf配置文件,到該目錄下使用命令:vi 配置文件名

打開配置,將bind 127.0.0.1 註釋掉(最前面加個 #)spa

緣由:bind 127.0.0.1是隻容許本機訪問,就是隻容許Linux虛擬機本身訪問,而咱們要用本機去遠程訪問,顯然是不行的。code

2.關閉防火牆

不一樣的Centos版本命令不同,個人是Centos6.4,用/etc/init.d/iptables stop 關閉(CentOS 7使用 systemctl stop firewalld關閉防火牆 ),重啓Redis服務,再運行一下Java程序,正常執行。ip

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();
    }
複製代碼
相關文章
相關標籤/搜索