2017-05-18 44 views
0

当我在两台不同的服务器上部署redis服务器和spring服务器并尝试通过我的应用程序连接到spring服务器时,出现此问题。春季服务器无法使用jedis客户端连接到redis

应用详细信息:
我们有移动应用程序使用脚踏板发布gps坐标到春季服务器。在Spring服务器中,我们创建jedis pubsub连接并将这些gps数据发布到我们的Web应用程序,并且Web用户订阅这些jedis pubsub连接。

库版本:
跺脚:1.7.1
jedis:2.8.1
春:4.3.0

工作方案:
*配置弹簧服务器在远程我的本地机器和Redis的服务器生产服务器。
*在部署spring服务器的同一远程服务器上部署spring服务器和远程服务器和redis服务器。

部分工作场景:
*在部署spring服务器的远程服务器和不同远程服务器上的远程服务器和redis服务器上部署spring服务器。在这种情况下,我使用redis cli监视redis服务器,并且可以看到“HGETALL”,“PUBLISH”关键字及其数据。但同时我得到了下面的春天服务器错误:

造成的:

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) 

弹簧服务器可以成功depoyed到服务器,当jedis尝试发布或subscripe的连接出现异常。 我可以成功地ping命令从我们部署通过Redis的-CLI和弹簧服务器的服务器Redis的服务器Redis的服务器prtected模式是不与和绑定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

+0

的可能的复制[java.net.ConnectException:连接被拒绝(http://stackoverflow.com/questions/6876266/java-net-connectexception - 连接 - 拒绝) – mp911de

+0

不,这是不一样的问题,因为我的工作正常,当春季服务器在我的机器。它在情况3中不起作用,其中spring服务器和redis服务器位于两个不同的远程服务器中。 –

回答

0

这个问题指的春天远程服务器是不是ABL e在默认的Redis端口上与其他远程服务器(Redis服务器)进行通信。 也许您可以通过尝试从控制台使用netstat从其他远程服务器访问远程Redis服务器来确认此事。

0

我有同样的问题,最简单的办法是

找到下面的行放在redis.conf文件,并注释掉:

bind 127.0.0.1 

通过在它的前面加一个#

# bind 127.0.0.1 

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

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

redis-server /configFileLocation 
相关问题