碘化 未处理的错误事件: 错误: 连接 ETIMEDOUT



有人在使用 Node js ioredis 包连接到独立的 Redis 服务器时遇到以下错误吗?

下面是错误堆栈跟踪:

2018-08-16T10:52:18.351869060Z [ioredis] Unhandled error event: Error: connect ETIMEDOUT
2018-08-16T10:52:07.449457296Z at Timer.listOnTimeout (timers.js:207:5)
2018-08-16T10:52:07.449448499Z at tryOnTimeout (timers.js:237:5)
2018-08-16T10:52:07.449439722Z at ontimeout (timers.js:365:14)
2018-08-16T10:52:07.449430834Z at Socket._onTimeout (net.js:339:8)
2018-08-16T10:52:07.449421915Z at Socket.emit (events.js:185:7)
2018-08-16T10:52:07.449413002Z at emitNone (events.js:86:13)
2018-08-16T10:52:07.449403458Z at Socket.g (events.js:291:16)

这发生在节点 js 中仅实例化独立 Redis 对象时。下面是我正在使用的代码,

var publisher = new redis(redisPort, redisHost);

任何解决方案都将不胜感激。

您可以尝试增加超时限制,因为ioredis具有默认超时值。

通常我们会将其设置为,

new Redis({
connectTimeout: 10000
})

在你的情况下,既然你有,

var publisher = new redis(redisPort, redisHost);

您必须编辑代码以传递要相应地传递的connectTimeout参数。

希望这有帮助。

有点晚了,但将来对其他人可能会有所帮助。

const redis = new Redis({
port: <your_redis_port>,
host: <your_redis_hostname>,
connectTimeout: 10000
});

我正在使用由 Heroku 维护的 Redis客户端,由于某种奇怪的原因,Heroku 更改了 Redis 凭据,我一直面临同样的问题,直到我仔细检查旧凭据和 Heroku 上的凭据,我意识到它们不再相同,然后从 Heroku 复制新凭据并将其粘贴到我的 .env 文件中,现在一切都按预期工作!!

添加keepAlive帮助了我。

const redisClient = new Redis({
host: CONFIG.REDIS_HOST,
username: CONFIG.REDIS_USER,
password: CONFIG.REDIS_PASSWORD,
port: CONFIG.REDIS_PORT,
lazyConnect: true,
keepAlive: 1000,
});

相关内容

  • 没有找到相关文章

最新更新