【问题标题】:Cannot connect to Redis using node js module无法使用节点 js 模块连接到 Redis
【发布时间】:2022-01-06 15:56:30
【问题描述】:

我已经在端口 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 );

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

【问题讨论】:

    标签: javascript node.js redis


    【解决方案1】:

    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)
      }
    })()
    

    【讨论】:

      猜你喜欢
      • 2019-06-02
      • 2014-05-08
      • 1970-01-01
      • 2018-04-28
      • 2017-08-06
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多