如何在节点redis上getAll

how to getAll on node redis

我正在尝试使用 hgetall 从 redis 中获取所有值 return 所有 'Task_'* 值。

代码:

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 returns null

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);
        });
    });
});

我找到了另一个解决方案...

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);
      });
    });
}

使用"keys" 获取所有密钥,并传递给 mget。 mget 函数 return 所有结果...更好处理。