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

Redis运行正常但Node.js调用zadd命令返回false的原因是什么

问题原因
  • 你通过bluebird的promisifyAll方法对redis模块做Promise化处理后,原有的回调式API(比如zadd)不会变为Promise方法,Promise化后的API会统一新增Async后缀,你应该调用zaddAsync而非zadd。
  • 你使用的v3及更早版本的node_redis,回调式API如果没有传入回调函数作为最后一个参数,会同步返回false表示操作未完成,不需要等待Redis服务端的响应。此时命令已经成功发送到Redis服务端执行,所以你在redis-cli可以查到写入的数据,但代码里拿到的返回值是同步的false。
修复代码
async zadd() {
  // 调用Promise化后的API,加await等待服务端返回结果
  let result = await this.client.zaddAsync([
    `person`,
    0,
    `${JSON.stringify({
      id: "aklas-djsadfdf3-034ukf",
      name: "Tiago Ribeiro",
      age: 42,
    })}`,
    0,
    `${JSON.stringify({
      id: "akljsdf-034ukf",
      name: "Cleber Machado",
      age: 29,
    })}`,
  ]);

  console.log(result);
  return result;
}

修复后正常返回值为本次操作新增的元素个数,你本次插入2条新数据,返回值为2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:57:03