目前我这样做是为了在NodeJS和Redis中使用node-redis获取许多值:
redis.get('data1', function(err, data1)
{
redis.get('data2', function(err, data2)
{
redis.get('data3', function(err, data3)
{
if (data3 == xx && data2 == xx && data3 == xx)
{
console.log('its ok');
}
});
});
});
问题在于,这三个请求将是一个接一个,我想一次做3个,然后以这样的方式调用我的条件(这不是为了让你理解它的工作)我想要的是什么):
redis.get('data1', function(err, data1) { var data1 = data1; });
redis.get('data2', function(err, data2) { var data2 = data2; });
redis.get('data3', function(err, data3) { var data3 = data3; });
// When the 3 get operations was finished
if (data3 == xx && data2 == xx && data3 == xx)
{
console.log('its ok');
}
提前谢谢
答案 0 :(得分:8)
MGET可能是最快的,而不是来回3次:
client.mget(["data1", "data2", "data3"], function (err, res) {
console.dir(res);
});
答案 1 :(得分:3)
您也可以使用multi
var m = redis.multi();
m.get('data1');
m.get('data2');
m.get('data3');
m.exec(function(err, results) {
console.log(results);
});
答案 2 :(得分:1)
一种可能的(但相当流行的)方法是使用async模块,如下所示:
async.map(['data1','data2','data3'], redis.get, function (err, results) {
if (err) { return; }
// results is now an array
});