如何在节点redis上得到all

我尝试使用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

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

我发现另一个解决scheme

 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函数返回所有结果…更好地处理。