2015-12-08 5 views
2

Я пытаюсь получить все значения из redis, используя hgetall для возврата всех значений 'Task_'*.Как получитьAll на узел redis

код:

var redis = require('redis'), 
     client = redis.createClient(); 

var tasks = [ 
    { 
     "_id" : "t1", 
     "creationDate" : "2015-10-02T19:39:37.181Z", 
     "device" : "2" 
    },{ 
     "_id" : "t2", 
     "creationDate" : "2015-10-02T19:39:37.181Z", 
     "device" : "1" 
    } 
]; 

tasks.forEach(function(task){ 
    client.set("task_"+task._id, JSON.stringify(task)); 
}) 

client.hgetall("task_", function(e, dt){ 
    if(e)console.log(e); 

    console.log(dt); 
}) 

hgetall возвращает null

+0

Если у вас есть решение, отметьте его как принятое. Вот как это работает! –

ответ

0

я нашел другое решение .. .

exports.getAll(calback){ 
    var arr = []; 
    client.keys("task_*", function(e, keys){ 
     if(e) {console.log(e);} 
     client.mget(keys, function(err, values){ 
     if(err){console.log(err)} 
     console.log(values); 
     callback(values); 
     }); 
    }); 
} 

используя «ключи», чтобы получить все ключи и перейти на mget. Функция mget возвращает все результаты ... лучше обрабатывать.

1

hgetall для хэшей у вас есть простые ключи вместо этого, вы могли бы использовать что-то вроде этого:

client.keys("task_*", function(e, keys){ 
    if(e)console.log(e); 

    keys.forEach(function (key) { 
     client.get(key, function (err, value) { 
      console.log(value); 
     }); 
    }); 
}); 
+0

это работа! спасибо –

+0

Рад, что это работает, пожалуйста, подумайте о том, чтобы принять ответ, если он решил ваш вопрос. –

+0

Просто хотел отметить, что использование команды 'keys' настоятельно рекомендуется в производстве. Из [docs] (http://redis.io/commands/keys): «Предупреждение: рассмотрите KEYS как команду, которая должна использоваться исключительно в производственных средах с особой осторожностью. Она может испортить производительность, когда она выполняется в отношении больших баз данных Эта команда предназначена для отладки и специальных операций, таких как изменение раскладки в вашем ключевом пространстве. Не используйте KEYS в вашем обычном коде приложения. Если вы ищете способ найти ключи в подмножестве своего пространства ключей, подумайте об использовании SCAN или устанавливает. " –

 Смежные вопросы

  • Нет связанных вопросов^_^