spring服务器无法使用jedis客户端连接到redis

时间:2017-05-18 09:08:08

标签: java spring sockets redis jedis

当我在两个不同的服务器中部署redis服务器和spring服务器并尝试通过我的应用程序连接到spring服务器时,我遇到了这个问题。

应用详情:
我们有使用stomp向弹簧服务器发布gps坐标的移动应用程序。在spring服务器中,我们创建jedis pubsub连接并将这些gps数据发布到我们的Web应用程序,Web用户订阅这些jedis pubsub连接。

图书馆版本:
践踏:1.7.1
jedis:2.8.1
春天:4.3.0

工作方案:
*在我的本地计算机中部署spring服务器,在远程生产服务器中部署redis服务器 *在部署spring服务器的同一远程服务器中部署远程服务器和redis服务器中的spring服务器。

部分工作方案:
*在远程服务器中部署spring服务器,在部署spring服务器的不同远程服务器中部署redis服务器。在这种情况下,我使用redis cli监控redis服务器,我可以看到带有数据的“HGETALL”,“PUBLISH”关键字。但同时我在spring服务器中遇到以下错误:

引起:

java.net.ConnectException: Connection refused (Connection refused)
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    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.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at redis.clients.jedis.Connection.connect(Connection.java:158)
    ... 4 more
redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused (Connection refused)
    at redis.clients.jedis.Connection.connect(Connection.java:164)
    at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:80)
    at redis.clients.jedis.Connection.setTimeoutInfinite(Connection.java:68)
    at redis.clients.jedis.Jedis.subscribe(Jedis.java:2626)
    at shipxpress.pubsubservice.controllers.SubscriberThread.run(MainController.java:227)

spring服务器可以成功地传送到服务器,当jedis尝试发布或订阅连接时会发生异常。 我可以通过redis-cli从我们部署spring服务器的服务器成功ping到redis服务器,redis服务器prtected-mode为no,并且bind ip设置为0.0.0.0

链接: 我经历了以下链接,但没有运气 Redis bind to more than one IP

https://github.com/xetorthio/jedis/issues/1405

Cannot connect to redis using jedis

2 个答案:

答案 0 :(得分:0)

此问题意味着Spring远程服务器无法与默认Redis端口上的其他远程服务器(Redis服务器)通信。 也许您可以通过从控制台使用:=从其他远程服务器访问Remote Redis服务器来确认这一点。

答案 1 :(得分:0)

我有同样的问题,最简单的解决方案是

redis.conf文件中找到以下行并将其注释掉:

bind 127.0.0.1

在其前面添加#

# bind 127.0.0.1

并将第protected-mode yes行更改为protected-mode no

保存redis.conf并使用redis文件重新启动config

redis-server /configFileLocation