无法使用节点js模块连接到Redis

Cannot connect to Redis using node js module

我已经启动了 redis,运行 在端口 6379 上,通过 telnet 连接工作正常。

我正尝试在 node.js 上连接到它,但我没有收到事件侦听器的响应。 如果我调用 client.set() 之类的任何函数,我会得到:“ClientClosedError:客户端已关闭”。

这是我的代码 运行:

const redis = require('redis');
const client = redis.createClient(6379);

client.on('connect', () => {
    console.log('connected');
});
client.on('end', () => {
    console.log('disconnected');
});
client.on('reconnecting', () => {
    console.log('reconnecting');
});
client.on('error', (err) => {
    console.log('error', { err });
});

setTimeout(() => {console.log("goodbye") }, 20*1000 );

20 秒内没有任何反应,然后关闭

node-redis库的v4开始,初始化客户端后需要调用client.connect()。看到这个 migration guide.

const redis = require('redis');
const client = redis.createClient({ socket: { port: 6379 } });

client.connect();

client.on('connect', () => {
    console.log('connected');
});

您可能还想考虑 运行 在异步函数中使用 await 的客户端连接方法。所以你不必担心事件侦听器。

const redis = require('redis');

(async () => {
  try {
    const client = redis.createClient({ socket: { port: 6379 } });
    await client.connect();
    console.log('connected');
  } catch (err) {
    console.error(err)
  }
})()