Lrange возвращает false вместо списка - PullRequest
0 голосов
/ 01 января 2019

Я пытаюсь создать свою собственную простую очередь сообщений с помощью 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;

когда я запускаю функцию sendMessage из message_queue.js, она печатает false и false.

что я делаю неправильно, чтобы поместить элемент в очередь и распечатать его?Нужно ли что-то делать перед этим процессом, например, объявить список?

ps Я не знаю, является ли это правильным методом для использования этого пакета, но мне кажется, что мне нужно использовать функцию обратного вызова для доступарезультат ...

следующий код работает как положено

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

1 Ответ

0 голосов
/ 01 января 2019

Вам не нужно «объявлять» списки в Redis, RPUSH должен создать список под указанным ключом при первом его использовании.

Возможно ли, что вы уже использовали имя ключа ичто-то, что не список?Это объясняет поведение, которое вы видите.В этом случае сначала запустите DEL <key> в Redis, чтобы исправить это.

...