ioredis错误:连接ETIMEDOUT - 无法连接本地redis服务器

3

问题

在我的 Node.js 后端中,我初始化了一个 Redis 服务器:

const options = {
  host: process.env.REDIS_HOST, // localhost
  port: process.env.REDIS_PORT, // 6379 Redis standard port
  db: 0,
  // reconnect after
  retryStrategy: times => Math.min(times * 50, 2000),
  tls: {}
};

export const redis = new Redis(options);

很不幸,我总是收到这个错误信息:

[ioredis] Unhandled error event: Error: connect ETIMEDOUT
    at TLSSocket.<anonymous> (/home/pascal/vipfy/vipfy-backend/node_modules/ioredis/built/redis.js:298:31)
    at Object.onceWrapper (events.js:273:13)
    at TLSSocket.emit (events.js:182:13)
    at TLSSocket.EventEmitter.emit (domain.js:442:20)
    at TLSSocket.Socket._onTimeout (net.js:449:8)
    at ontimeout (timers.js:436:11)
    at tryOnTimeout (timers.js:300:5)
    at listOnTimeout (timers.js:263:5)
    at Timer.processTimers (timers.js:223:10)

我本地安装了Redis,并使用redis-cli命令来ping本地服务器,未设置密码。它总是返回正面答复,但我似乎无法通过ioredis访问它。有人有想法吗?

1个回答

4

请确保您的redis服务器正在运行。您可以尝试不使用选项参数来连接redis,这样它将自动通过主机名 localhost 和端口 6379 尝试连接本地redis。

redis = new Redis();

如果您没有特定的优势可以尝试以下方法,我正在使用以下方法,效果很好。

软件包:"redis": "^2.8.0"

代码:

var redis = require('redis');
var redis_conn = redis.createClient();

redis_conn.set("key", "val");

如上所述,服务器正在运行,因为我通过redis-cli成功地对其进行了ping测试。此外,我明确尝试使用本地主机和端口6379。应该在我的原始评论中更清楚地说明这一点。我尝试了你的示例,但不幸的是,出现了相同的错误。无论如何,还是谢谢。 - Gh05d
似乎我的问题是我没有执行redis.createClient。当切换到这个时,它似乎可以工作。 - Gh05d
1
好的 @Gh05d。很高兴能帮忙。 - Premanandh Selvakumarasamy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接