首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lrange返回false,而不是列表

lrange返回false,而不是列表
EN

Stack Overflow用户
提问于 2019-01-01 22:52:10
回答 1查看 426关注 0票数 0

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

然而,我在和Redis排队时遇到了问题。

我在项目的其他部分使用Redis进行缓存,所以我确信redis连接是正常的(+我尝试打印出实例,它看起来很好)。

message_queue.js

代码语言:javascript
复制
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

代码语言:javascript
复制
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函数时,它输出false和false。

将项目推入队列并打印它,我做错了什么?在这个过程之前,我是否需要做一些事情,比如声明一个列表?

附注:我不知道这是否是使用这个包的正确方法,但似乎我需要使用回调函数来访问结果……

下面的代码按预期工作

代码语言:javascript
复制
redis.lrange(queue,0,-1,function(err,res){
    if(res.length != 0){
        console.log(`Something is in queue`);
    }
});
EN

回答 1

Stack Overflow用户

发布于 2019-01-01 22:57:51

你不需要在Redis中“声明”列表,RPUSH应该在第一次使用时在指定的key下创建一个列表。

有没有可能你已经使用了键名并且存储了一些不是列表的东西?这可以解释你所看到的行为。在这种情况下,首先在Redis中运行DEL <key>来修复它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53996420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档