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

Node.js向Redis列表推送数据遇TypeError错误求助

问题原因及解决方法

这个错误是因为你使用的是node-redis v4+版本,该版本API和旧版有核心差异:

  • 不再支持回调风格的命令调用,全部改为Promise/async-await形式
  • RPUSH的参数传递方式错误,不能把列表名和值放在同一个数组里

修正后的代码

const redis = require("redis");
const redisclient = redis.createClient();

// 打印详细错误信息,方便排查
redisclient.on("error", (err) => {
    console.log("Redis连接错误:", err);
});

// 确保Redis连接成功后再启动定时任务
(async () => {
    try {
        await redisclient.connect();
        console.log("Connected!");
        setInterval(generateRandomNumber, 1000);
    } catch (err) {
        console.log("连接Redis失败:", err);
    }
})();

const generateRandomNumber = async () => {
    const randomNumber = Math.floor(Math.random() * 100000);
    console.log('Generated random number:', randomNumber);
    try {
        // v4版本RPUSH的正确写法:列表名 + 要推入的值
        const reply = await redisclient.RPUSH('randomNumbers', randomNumber);
        console.log(`Stored ${randomNumber} in Redis list,返回值: ${reply}`);
    } catch (err) {
        console.log('Error in rPush:', err);
    }
}

关键修改点

  1. 将连接逻辑和定时任务启动绑定,避免在未连接时执行Redis命令
  2. generateRandomNumber改为async函数,用await替代回调调用RPUSH
  3. 调整RPUSH参数格式,不再用数组包裹列表名和值

额外选项

如果需要兼容旧版代码逻辑,可以安装node-redis v3版本:

npm install redis@3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:22:20