如果你看到这里,我默认你已经安装好了redis,并且已经成功的在虚拟机的Linux系统中ping通。
介绍一下我的环境:VMware虚拟机安装centos 6.5版的Linux系统,redis是3.0.0. 主机是win10,使用的redis desktop manager是一个很古老的版本0.7.9.809,确实十分古老。但是博主只是为了测试是否能连接,因此各位不要纠结这个问题。JAVA IDE是eclipse mars。
好了,在虚拟机中已经可以成功Ping通,如下图
现在进入正题!!!!!
我真的是太气愤了!!!网上虽然确实有一大堆人出谋划策,帮助大家解决学习过程中遇到的Bug。但是!!!能不能不要千篇一律复制粘贴!!对自己写的东西负责好吗!!!
从头到尾,我看了百来篇技术博客、文档,都是说bind 127.0.0.1注释掉(确实需要),受保护模式改为no设置密码主机和虚拟机ip要在同一网段等(根本不需要)...还有要不就是贴一堆failure trace代码!!连那种没有用的代码问问题的时候都要粘上来,谁有那个心情看啊!!!
请务必答应我错误代码放精华部分就行了好吗!!!
好吧,上面是牢骚,接下来才是正题!!
如果你已经用完了上述所有方法还是无法解决redis desktop manager无法连接虚拟机中的redis时,罪魁祸首一定是你的虚拟机防火墙。
最好的测试是不是虚拟机中的linux系统的防火墙在捣鬼的办法如下:
打开你windos系统的cmd,敲 telnet linux系统ip 端口号,如:telnet 192.168.18.133 6379
(linux系统的Ip应该都知道咋看吧,敲ifconfig取第一个出现的Ip地址就行了)
如果提示telnet不是内部外部指令啥的,打开控制面板,依次点击下图中矩形框中的东西
请务必在系统提示你重启的时候果断重启!!!!请务必在系统提示你重启的时候果断重启!!!!请务必在系统提示你重启的时候果断重启!!!!
网上说打开telnet客户端不用重启的是win7系统,win10比win7傲娇啊!!不重启就不让你的选择生效!楼主在这里也走了弯路,一把辛酸泪。
设置完了,重启之后,你的所有程序都关闭了吧。这个时候就请你不厌其烦的,打开你的vmware,再开启你的centos,再启动你的redis,再测试一下能否在centos中ping通。也就是...回到最初的样子。
弄完之后,进入windows 的cmd界面,敲telnet linux系统ip 端口号,如果迅速出现一片漆黑,那你可以关掉网页了....因为本篇博客帮不了你。
如果出现(当然我输6380是为了截图失败的结果,你应该输的估计是6379)
那就说明的确是你的centos的防火墙在整幺蛾子!不听话!先把它关小黑屋呆一会儿!让它心甘情愿开放你需要的端口,再打开它。
依次敲击如下代码:
/etc/init.d/iptables stop
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
/etc/init.d/iptables save
service iptables restart
敲击完了之后,可以查看一下是否开放成功,检查状态的代码:/etc/init.d/iptables status
如果开放成功应该是这样的:
你们关注6379就是了,其它的端口是我redis-cluster用的,开启的方法都一样,在用eclipse连集群失败的时候也是因为端口没有开,错误代码是:
(单机版的错误代码)redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
(集群版的错误代码)redis.clients.jedis.exceptions.JedisConnectionException: no reachable node in cluster
开启端口之后,再用telnet指令检查一下能否连接。如果还是不能连接,就再关一下防火墙,再开一下防火墙。反正我是这么解决的....如果你这么做了还没有解决的话,就各种重启一下试试吧...反正你也找不到别的解决办法,还不如用网管的万能法则——重启。
幸运的话,你也出现一片漆黑了,再用redis desktop manager测试一下是否能连接成功。
如果成功的话,反应是很快的,如果你点TESTCONNECTION很久都没反应,估计又失败了。很抱歉,恕在下才疏学浅,帮不上忙....祝你好运!