和上一篇博客相连接,先要修改虚拟机中redis的配置文件:
-
注释掉Bind连接的IP地址;
-
关闭保护模式;
-
然后退出编辑模式,并保存退出,先
Esc
,再输入:wq
;最后还要关闭服务端redis-cli shutdown
,然后再重启redis-server
; -
IDEA中需要用到的jar包有:Jedis;用到是maven构建;
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
</dependency>
- 但是按照上面的方式做了之后还是连接出错了;
public class TestRedis {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.146.142",6379);
String ping = jedis.ping();
System.out.println(ping);
jedis.close();
}
}
//报错的内容是:
/*
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to host 192.168.146.142:6379
at redis.clients.jedis.Connection.connect(Connection.java:204)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:100)
at redis.clients.jedis.Connection.sendCommand(Connection.java:125)
at redis.clients.jedis.Connection.sendCommand(Connection.java:120)
at redis.clients.jedis.BinaryClient.ping(BinaryClient.java:113)
at redis.clients.jedis.BinaryJedis.ping(BinaryJedis.java:188)
at TestRedis.main(TestRedis.java:6)
Caused by: java.net.SocketTimeoutException: connect timed out
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at redis.clients.jedis.Connection.connect(Connection.java:181)
... 6 more
*/
出了上面的问题,我第一个想到的就是IP可能是不是不对,所以再Linux中使用ifconfig
重新检查IP,发现我想错了,IP没有填错;
第二个想法就是是不是当前的主机连接不上虚拟机,于是我在主机ping
了一下虚拟机的IP,发现没有问题,于是我就百度了一下,为什么无法连接成功;
大致的结果就是有防火墙,需要将防火墙关闭:
#关闭防火墙;
systemctl stop firewalld.service
#禁止防火墙启动;
systemctl disable firewalld.service
执行完上面的操作后:
这样就链接上了虚拟机上的Redis了;