node.js - lrange 返回 false 而不是列表
问题描述
我正在尝试使用 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 函数时,它会打印 false 和 false。
将项目推入队列并打印它我做错了什么?在此过程之前我是否需要做一些事情,例如声明一个列表?
ps 我不知道这是否是使用这个包的正确方法,但似乎我需要使用回调函数来访问结果......
以下代码按预期工作
redis.lrange(queue,0,-1,function(err,res){
if(res.length != 0){
console.log(`Something is in queue`);
}
});
解决方案
你不需要在 Redis 中“声明”列表,RPUSH 应该在第一次使用时在指定的键下创建一个列表。
您是否可能已经使用了密钥名称并存储了非列表的内容?这将解释您所看到的行为。DEL <key>
在这种情况下,首先在 Redis 中运行以修复它。
推荐阅读
- google-sheets - 如何制作条件函数?
- python - Django中的多级连接
- java - 列表首选项默认值不起作用Android工作室
- r - geom_rect 不遵守 for 循环中的 x 和 y 限制
- bash - bash脚本文本文件操作问题
- autodesk-viewer - GET 清单端点返回 401
- javascript - PhpStorm:不同的导入路径
- regex - 匹配所有带有起始模式和单词的行
- haskell - 寻找与 liftA2 相关的 Haskell 函数,但其工作方式类似于 Alternative 中的 <|>
- python - 我想从双重嵌套列表中绘制线段并使用 ipwidgets 的交互来控制绘制哪个子列表