NodeJS和Redis:同时获得三个值

时间:2015-03-17 23:21:18

标签: node.js get redis

目前我这样做是为了在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'); 
}

提前谢谢

3 个答案:

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