Jedis踩得坑
Redis环境:
Ubuntu
IDEA环境:
Windows 10
主机和虚拟机桥接方式:
NAT
1 故事的开始
今天试着用Jedis练练手,各方面都准备好了,兴冲冲的打开IDEA准备敲BUG,先看代码
package com.xzzlx;
import redis.clients.jedis.Jedis;
/**
* @author:
* @Description:
* @date:2021/11/16 16:54
*/
public class JedisDemo1 {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.52.254", 6379);
String value = jedis.ping();
System.out.println(value);
}
}
运行代码,
然后,然后~
它就来了Caused by: java.net.SocketTimeoutException: Connect timed out
出现喜庆的颜色
2 尝试挣扎
接着着去Ubuntu中打开redis.conf中看看自己是不是没有把远程主机ip注释掉
远程访问
防火墙6379端口也开放了
那怎么还是连接超时啊
3 解决问题
最后突然想起来,我的虚拟机的ip地址是多少呢,一查果然发现了问题,Windows中ip为192.168.52.254
,但是ubuntu中呢?是192.168.17.135
然后修改代码中ip号
package com.xzzlx;
import redis.clients.jedis.Jedis;
/**
* @author:
* @Description:
* @date:2021/11/16 16:54
*/
public class JedisDemo1 {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.17.135", 6379);
String value = jedis.ping();
System.out.println(value);
}
}
看到控制台上打印pong表示成功了
4 总结
Jedis中出现连接超时可能是由以下四个可能造成的:
- redis.conf中127.0.0.1没有注释掉,其他ip访问不了
- protected-mode yes中yes没有改成no
- 防火墙没有关闭或者6379端口没有开放
- Jedis中端口号的ip地址和Ubuntu中ip不一样
哎,醉了醉了~~