node.js - lrange 返回 false 而不是列表

标签 node.js list redis push

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

但是,我在使用 Redis 创建队列时遇到了问题。

我在我项目的其他部分使用 Redis 进行缓存,所以我确定 Redis 连接没问题(+ 我尝试打印出实例,看起来没问题)。

消息队列.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 函数时, 它打印 false 和 false。

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

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

以下代码按预期工作

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

最佳答案

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

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

关于node.js - lrange 返回 false 而不是列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53996420/

相关文章:

node.js - express.js,为什么 res.write 不在 api 引用中

mysql - SQL in 子句,on column,不能正常工作

string - 在 Haskell 列表推导式中进行一些替换

python - 在 redis-py 中执行 zadd 时使用 nx 选项(redis ver 2.8.4)

AWS Elastic Beanstalk 上的 django-rq 和 rqscheduler 部署

javascript - 使用 Gmail API NodeJS 授权错误列出邮件

javascript - NodeJS "readline"模块不输出提示

javascript - 如何使用 async/await 方法将对象传递到 phantom js 页面?

python - python 中的元组列表

redis - not in redis查询怎么写