You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中调用Redis的set、get方法无输出,求故障原因

问题原因及解决办法

核心原因

你的代码问题主要出在Redis客户端版本不兼容以及错误未捕获这两点:

  • 若使用的是Redis官方客户端 @redis/client v4及以上版本,它已全面切换为Promise/async-await风格API,传统的回调写法(如client.set(key, value, callback))不再被支持,导致set和get的回调根本不会执行,自然看不到后续输出。
  • 代码里的回调没有处理错误参数err,就算有错误发生(比如权限问题、键操作失败),你也看不到任何提示,无法排查问题。

修正后的代码示例

方式1:使用async-await(推荐)

const redis = require('@redis/client');
const consola = require('consola');

async function runRedis() {
  const client = redis.createClient({
    host: '你的host地址',
    port: 你的端口号
  });

  // 监听错误,避免静默失败
  client.on('error', (err) => consola.error('Redis客户端错误:', err));

  await client.connect();
  consola.success('Connected!');

  try {
    await client.set('framework', 'ReactJS');
    const value = await client.get('framework');
    console.log('value', value);
    // 操作完成后可按需关闭连接
    await client.quit();
  } catch (err) {
    consola.error('操作失败:', err);
  }
}

runRedis();

方式2:兼容回调(仅适合旧版本客户端)

如果坚持用回调,需确保安装的是旧版本Redis客户端(如redis v3.x),同时补充错误处理:

const redis = require('redis');
const consola = require('consola');

const client = redis.createClient(你的端口号, '你的host地址');

client.on('connect', function() {
  consola.success('Connected!');
  client.set('framework', 'ReactJS', function(err, reply) {
    if (err) {
      return consola.error('Set操作失败:', err);
    }
    client.get('framework', function(err, value) {
      if (err) {
        return consola.error('Get操作失败:', err);
      }
      console.log('value', value);
    })
  })
});

client.on('error', (err) => consola.error('Redis客户端错误:', err));

额外注意点

  • 务必监听error事件,Redis客户端的错误若不处理,会导致进程崩溃或静默失败,你完全无法知晓问题所在。
  • 新版本客户端的createClient参数格式已变更,需传入配置对象而非单独的port和host参数。

内容的提问来源于stack exchange,提问作者chenguang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:54:36