问题描述: jedis连接虚拟机报错:connection timeout。
问题分析:
1.首先查看能否Ping 通虚拟机。
发现没有问题。
2.查看虚拟机防火墙是否开放6379端口。
发现之前由于安装mysql关闭了防火墙,并不是防火墙的原因。
如果是防火墙没有开放6379,解决方法如下:
sudo firewall-cmd --permanent --add-port=6379/tcp
设置完成可以查看防火墙设置:
firewall-cmd --list-all
将配置文件中的 bind 127.0.0.1的地址后加上自己虚拟机的地址即可。
关于这一行,官方注释的翻译如下:
默认情况下,如果未指定“bind”配置指令,Redis将侦听
用于服务器上所有可用网络接口的连接,可以使用以下命令设置仅监听一个或多个选定接口,bind指令后跟一个或多个网络地址,例如:
bind 192.168.1.100 10.0.0.1
警告:如果运行Redis的计算机直接暴露于在internet上,绑定到所有接口是危险的,会将实例暴露给internet上的每个人。因此,默认情况下,我们取消注释遵循bind指令,这将强制Redis只监听IPv4环回接口地址(这意味着Redis将只能接受来自运行在同一台计算机上的客户端的连接)。如果您确定希望您的实例侦听所有接口,只需注释以下行即可
从注释看redis为了安全,设置了redist地址绑定。我的理解是redis的bind 绑定的是本地的ip地址,也就是网卡地址。从下图可以看到有三块网卡,ens33,ens37,lo.因为127.0.0.1是一个回环地址,只有本机才能访问到。如果bind绑定的是其他ip地址,会发现redis起不来,原因就在于我们是通过本地网卡地址访问的redis,与配置文件不一样。
bind 127.0.0.1 虚拟机地址