Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
at redis.clients.jedis.Connection.connect(Connection.java:207)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93)
at redis.clients.jedis.Connection.sendCommand(Connection.java:126)
at redis.clients.jedis.Connection.sendCommand(Connection.java:121)
at redis.clients.jedis.BinaryClient.flushDB(BinaryClient.java:140)
at redis.clients.jedis.BinaryJedis.flushDB(BinaryJedis.java:322)
at com.cym.jedis.JedisTest.main(JedisTest.java:18)
Caused by: java.net.ConnectException: Connection refused: connect
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:184)
... 6 more
无论是单机版还是集群都有可能出现这种情况,如果出现上述的情况有
- redis服务没有启动。
- jedis连接的ip地址和端口没有对(网络没有通)。
- 主机的防火墙开启。CentOS 7.0默认使用的是firewall作为防火墙
查看防火墙状态
firewall-cmd --state
停止firewall
systemctl stop firewalld.service
禁止firewall开机启动
systemctl disable firewalld.service
- 安装redis时,Redis 的配置文件默认是绑定本地ip的,所以我们要去系统中找到bind 127.0.0.1,然后把它注释掉,那么就可以连接上了或者改成bind 0.0.0.0
- redis3.2版本后新增protected-mode配置,默认是yes,即开启。设置外部网络连接redis服务,设置方式如下:
- 关闭protected-mode模式,此时外部网络可以直接访问 (protected-mode no)
- 开启protected-mode保护模式,需配置bind ip或者设置访问密码
集群出现的错误:上面的情况检查过都是没问题的,集群可能在使用jedisCluster连接测试的错误
JedisCluster测试
(jedis2.9的错误)
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
jedis2.8的错误
Exception in thread "main"
redis.clients.jedis.exceptions.JedisClusterMaxRedirectionsException:Too many Cluster redirections?
这个可能是在搭建集群的时候你执行ruby的指令的ip地址是使用了127.0.0.1:
ruby redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
kill掉所以结点,删除data下的所有数据(dump、aof、nodes)文件,重新配置,重新使用自己主机的ip地址执行ruby指令就OK了
ruby redis-trib.rb create --replicas 1 192.168.37.129:7001 192.168.37.129:7002 192.168.37.129:7003 192.168.37.129:7004 192.168.37.129:7005 192.168.37.129:7006