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