jedis开发相关bug(不定期更新)

远程连接池无法获取Jedis

详细描述

  • redis已经配置允许远程链接
  • 远程可以直接连接 redis服务,如192.168.0.100:6379
  • jedis可以连接到 哨兵服务,默认端口26379
  • 使用Jedis哨兵连接池或者集群无法正常获取Jedis

原因分析

  • 很可能是因为服务端配置哨兵或者集群时使用了本地回环网卡127.0.0.1作为地址,而没有使用外网网卡192.168.xxx.xxx这样的地址
  • 当远程主机和哨兵服务通信时,哨兵会将配置服务时使用的ip直接发送给远程主机,
    • 如果配置文件中的地址是127.0.0.1,返回给远程Jedis的地址也是 127.0.0.1,Jedis会直接使用这个地址构建连接池。最终导致Jedis并没有创建到Redis服务器的连接池,程序发生获取Jeids实例失败,抛出Connect timed out异常
    redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Connect timed out
    

解决方案

  • 将redis哨兵服务中的地址改成其他网卡地址即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_console_

您的关注与鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值