无法使用node js模块连接到Redis

Val*_*har 4 javascript redis node.js

我已经在端口 6379 上启动并运行了 redis,通过 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 );

Run Code Online (Sandbox Code Playgroud)

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

bor*_*kin 8

从v4node-redis库开始,需要client.connect()在初始化客户端后调用。请参阅此迁移指南

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

client.connect();

client.on('connect', () => {
    console.log('connected');
});
Run Code Online (Sandbox Code Playgroud)

您可能还需要考虑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)
  }
})()
Run Code Online (Sandbox Code Playgroud)