如何在节点redis上获取所有内容

时间:2015-12-08 11:19:33

标签: javascript node.js redis node-redis

我尝试使用hgetall从redis获取所有值,以返回所有'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返回null

2 个答案:

答案 0 :(得分: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);
        });
    });
});

答案 1 :(得分: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);
      });
    });
}

使用“keys”获取所有密钥,并传递给mget。 mget函数返回所有结果...最好处理。