2

在 AWS 中,我使用 ElastiCache Redis 服务器并使用节点作为后端和“promise-redis”包

这就是我尝试连接到我的 redis 服务器端点的方法

client = redis.createClient({
        host: '**my redis primary endpoint**',
        port: 6379
    });

这工作了一段时间,但在添加了一些 与redis无关的代码行之后, 它给了我这个错误

error: connect ECONNREFUSED 127.0.0.1:6379

似乎试图连接到本地服务器并忽略我给他的主机端点

当我将端口更改为6300之类的任何数字时

它也给出了与默认端口号相同的错误

error: connect ECONNREFUSED 127.0.0.1:6379

我很困惑,请帮忙!!!!

4

2 回答 2

3

这些“天才”在他们的库中改变了连接这样重要的事情,甚至没有给出好的警告。我已经对这样一个事实保持沉默,即当您的一百万个项目中的库已经编码时进行此类更改是犯罪行为。现在你需要像这样连接:

const client = redis.createClient({
  socket: {
    host,
    port
  },
  password
});

我建议你切换到ioredis库,有一个旧的api,只有客户端是通过new Redis创建的({old config})

因为在这个旧库(“redis”)中,出于某种原因,它们现在需要异步 connect() 来实现某些功能,而没有真正解释为什么需要它以及何时需要它,以及何时不需要它。一半的代码对我有用,一半没有。所以,最好使用这个:

let Redis = require('ioredis');
  const client = new Redis({
  host: '***',
  port: ****,
  password: '****'
});
于 2021-12-24T09:09:39.517 回答
0

确保主机密钥中没有协议部分“http://”

client = redis.createClient({ 
    host: '192.168.45.34', // don't use host: 'http://192.168.45.34'
    port: 6379 
});

如果在主机密钥中包含协议,redis 客户端默认使用 localhost - 127.0.0.1

于 2022-02-04T20:39:14.970 回答