IDEA连接Redis发现连接失败
今天在学习Redis的过程中碰到Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to host 192.168.43.144:6379。public class TestPing {public static void main(String[
今天在学习Redis的过程中碰到Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to host 192.168.43.144:6379
。
public class TestPing {
public static void main(String[] args) {
//192.168.43.144为虚拟机的IP地址
Jedis jedis = new Jedis("192.168.43.144", 6379);
System.out.println(jedis.ping());
}
}
从下图很明显可以看出来是一个ConnectionException的连接异常;
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to host 192.168.43.144: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:186)
at com.redis.TestPing.main(TestPing.java:12)
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
连接异常大体可以分为二类
1. IP地址
-
首先检查main方法或者@Test中的IP地址是否与虚拟机中的IP地址一致,端口号6379是否与虚拟机中的端口号一致。
-
利用主机的IP地址ping虚拟机的IP地址,看是否能ping通。一般情况下,如果虚拟机采用NAT的方式连接网络,则会出现主机ping不通虚拟机,虚拟机可以ping通主机的情况。因此可以将虚拟机连接网络的方式改为桥接,这时虚拟机和主机共享一个网段,当然也就可以ping通。
- -
虚拟机中的redis.conf配置文件中默认bind 127.0.0.1,此IP地址仅能在虚拟机本地才可以连接到redis,因此需要将redis.conf配置文件中的bind 127.0.0.1注释掉或者修改成电脑主机的IP地址*(我的是192.168.43.254)*或者修改为默认路由地址:0.0.0.0。
#bind 127.0.0.1
或者
bind 192.168.43.144
或者
bind 0.0.0.0
2. 防火墙
产生连接异常的一部分原因也是由于Liunx中防火墙默认开启,需要将防火墙关闭。
//关闭防火墙
systemctl stop firewalld.service
同时需要在redis.conf的配置文件中将安全模式关闭掉,默认是yes,改为no。
protected-mode no
最后shutdown,重启redis就可以正常访问到了。
我的问题是由于配置了NAT,导致主机IPping不通虚拟机的IP,最后参考了其他人的博客发现只需要将NAT换成桥接就可以了,这样就成功ping通了。
更多推荐
所有评论(0)