0
const redis = require("redis");

let client = redis.createClient({
    host: process.env.host,
    port: process.env.port,
    password:process.env.password
});

(async () => {
    client.on('error', (err) => console.log('Redis Client Error', err));
    await client.connect();
    console.log("connected to redis")
  })();

我已将 redis-heroku 插件添加到我的项目中,现在我试图从我的代码中访问它,但它给了我这个错误:“AuthError:ERR 客户端发送了 AUTH,但没有设置密码”。

此外,当我尝试从终端连接时,我可以连接到它,但是当我键入任何 redis 命令时,我会收到此“错误:对等方重置连接”。

如果我在本地系统和本地 redis 服务器上使用它,它工作正常

如果有人能给我提供heroku redis的工作代码会很有帮助,我认为redis有两个url:REDIS_URL,REDIS_TLS_URL。由于这个 tls 可能会出现问题(更安全)

金迪帮我谢谢

4

2 回答 2

0

在 node-redis v4 中,hostandport应该在一个socket对象内,而不是直接在主配置对象上(参见https://github.com/redis/node-redis/blob/master/docs/client-configuration.md):

const client = redis.createClient({
    socket: {
        host: process.env.host,
        port: process.env.port
    },
    password: process.env.password
});
于 2021-12-28T18:17:02.427 回答
0

Heroku redis 不公开 a hostportpassword变量。相反,他们公开了一个REDIS_URL包含所有这些内容的字符串。

我相信你需要像这样调用 createClient ......

createClient({
  url: process.env.REDIS_URL
});
于 2021-12-28T15:46:02.027 回答