无法从 Express 连接到远程 Redis
Posted
技术标签:
【中文标题】无法从 Express 连接到远程 Redis【英文标题】:Cannot connect from Express to remote Redis 【发布时间】:2020-07-31 10:34:39 【问题描述】:我在连接到远程 Redis 服务器时遇到问题。从我的本地客户端,当我从 cli 连接时,一切看起来都很好
redis-cli -h 192.168.80.236 ping
PONG
如果我尝试从简单的 Express 应用程序连接,我会不断收到以下错误
Redis PUBLISHER NodeJS application in port 3000
events.js:187
throw er; // Unhandled 'error' event
^
Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1128:14)
Emitted 'error' event on RedisClient instance at:
at RedisClient.on_error (/Users/sriramk/Projects/Personal/Express/simpleredis/node_modules/redis/index.js:341:14)
at Socket.<anonymous> (/Users/sriramk/Projects/Personal/Express/simpleredis/node_modules/redis/index.js:222:14)
at Socket.emit (events.js:210:5)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:80:21)
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 6379
让我感到困惑的是,Redis 连接到“localhost”,而它实际上应该连接到远程服务器。最初我的想法是,可能是一些导致连接问题的身份验证问题。但是如果redis-cli可以顺利连接,NodeJS有什么问题 完整代码可以在这个位置找到 - https://github.com/KrishnanSriram/simpleredis
非常感谢您的想法/建议。因为这个问题,我完全停止了
【问题讨论】:
192.168.80.236
不是 127.0.0.1:6379
可能将您的配置更改为 192.168.80.236
过去我在使用redis
库时遇到了一些问题,所以我现在只在本地使用ioredis
... 我使用docker 来托管我的本地Redis 实例,我将它用作@987654329 @试一试
@marpme 你有机会研究 github 代码吗?我的 API 中没有 127.0.0.1 。如果你没有,这就是我所拥有的 redis.createClient(6379, '192.168.80.236');
@balexandre 这是一个好点。我没有尝试过ioredis,虽然我读过它。在这种情况下,我将 Redis 用于发布/订阅。我了解 ioredis 也支持 pub/sub。需要尝试找出 ioredis 有多少不同以及移植成本会有多高(从 redis 到 ioredis)。谢谢。非常感谢
【参考方案1】:
我查看了您的存储库并在您的 server.js
中看到您尝试两次实例化 redis 客户端。
曾经
const client = redis.createClient();
然后用
const publisher = redis.createClient(6379, '192.168.80.236');
删除const client = redis.createClient();
应该可以解决问题,因为这会尝试连接到默认端口上的localhost
。
【讨论】:
优秀。新鲜的眼睛总是有帮助的。这就是结对编程很棒的原因。谢谢你的时间。修复了我的问题:)以上是关于无法从 Express 连接到远程 Redis的主要内容,如果未能解决你的问题,请参考以下文章
为啥我无法从任何网络连接到 NodeJS express 服务器?
无法从 SSMS 连接到 SQL Server Express
无法从 Web 服务器连接到 SQL Server Express