jedis客户端连接redis错误总结

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服务,设置方式如下:
  1. 关闭protected-mode模式,此时外部网络可以直接访问 (protected-mode no)
  2. 开启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 

猜你喜欢

转载自blog.csdn.net/qq_40368860/article/details/85114360
今日推荐