lrange返回false而不是列表

时间:2019-01-01 14:52:10

标签: node.js list redis push

我正在尝试使用Redis制作自己的简单消息队列。

但是,我在与Redis进行排队时遇到问题。

我使用Redis在项目的其他部分进行缓存,所以我确定redis连接很好(+我尝试了实例,这看起来还不错)。

message_queue.js

const redis = require("./redis.js");

var sendMessage = async (queue) => {
    var result = await redis.rpush(queue,5);
    console.log(result);
    var arr = await redis.lrange(queue,0,-1);
    console.log(arr);
};

redis.js

const redis = require('redis');
const redisinfo = require('../secret/redisinfo.js');
const client = redis.createClient(redisinfo);

client.on("error",function(err){
    console.log("Error " + err);    
});

module.exports = client;

当我从message_queue.js运行sendMessage函数时, 它会显示错误和错误。

将项目推入队列并进行打印,我做错了什么?在此过程之前,我需要做一些事情,例如声明列表吗?

p.s。 我不知道这是否是使用此程序包的正确方法,但似乎我需要使用回调函数来访问结果...

以下代码符合预期

redis.lrange(queue,0,-1,function(err,res){
    if(res.length != 0){
        console.log(`Something is in queue`);
    }
});

1 个答案:

答案 0 :(得分:0)

您不需要在Redis中“声明”列表,RPUSH应该在首次使用它时在指定键下创建一个列表。

是否可能已经使用了键名并存储了不是列表的内容?那可以解释您所看到的行为。在这种情况下,请先在Redis中运行DEL <key>进行修复。