当我在两个不同的服务器中部署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
答案 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