无法连接到nodejs中的redis

not able to connect to redis in nodejs

首先是细节:

节点版本:v16

使用 redislabs 云 (v6.2.3)

npm 包 redis 版本 4.0.3

这是代码...

const redis = require("redis");
require("dotenv").config();

const client = redis.createClient({
  host: process.env.REDIS_URI,
  port: process.env.REDIS_PORT,
  password: process.env.REDIS_PASSWORD
});

client.on("connect", () => {
  console.log("Connected to our redis instance!");
  client.set("iAmAKey", "Value");
});

在 运行 上它不输出任何东西 :( 只是在一段时间后退出。

如有任何帮助,我们将不胜感激。 谢谢!

.createClient 的调用创建了一个客户端,但实际上并没有连接到 Redis。所以连接事件永远不会触发。 Node Redis 4.x 支持 promise,所以你真的根本不需要回调。您可以使用以下方法完成同样的事情:

const redis = require("redis");
const client = redis.createClient();

await client.connect();
await client.set('foo', 'bar');
let foo = client.get('foo');

请注意,为了简洁起见,我在示例代码中删除了 dotenv 的用法,只是让它连接到 localhost 上的 Redis。

好吧,我现在让它工作了。添加此作为任何未来有相同问题的流浪者的参考。

所以社区建议改用URL。

const redis = require("redis");
require("dotenv").config();

(async () => {
  const client = redis.createClient({
    url: `redis://default:${process.env.REDIS_PASSWORD}@${process.env.REDIS_URI}:${process.env.REDIS_PORT}`,
  });

  client.on("error", (err) => console.log("Redis Client Error", err));

  await client.connect();

  await client.set("key", "value");
  console.log("Redis Connected!")
  const value = await client.get("key");
  console.log(value);
})();

以下问题供日后参考:Not able to connect to redis-labs cloud redis server #1892