NodeJS ioredis未处理的错误事件:错误:连接ETIMEDOUT

fkaflof6  于 2023-08-04  发布在  Node.js
关注(0)|答案(4)|浏览(243)

有人在使用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)

字符串
这是在node js中示例化Standalone Redis对象时发生的。下面是我使用的代码:

var publisher = new redis(redisPort, redisHost);


任何解决方案都将是高度赞赏的。

sirbozc5

sirbozc51#

您可以尝试增加超时限制,因为ioredis有一个默认的超时值。
通常我们会把它设置为

new Redis({
  connectTimeout: 10000
})

字符串
你的情况是,既然你有,

var publisher = new redis(redisPort, redisHost);


您必须编辑代码以相应地传递connectTimeout参数。
希望这对你有帮助。

olhwl3o2

olhwl3o22#

这是一个有点晚,但可以帮助在未来的其他人。

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

字符串

wixjitnu

wixjitnu3#

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

ncgqoxb0

ncgqoxb04#

添加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,
});

字符串

相关问题