個人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();
}
複製代碼