如何从Redis获取所有数据到JSON

时间:2014-04-28 19:01:51

标签: json node.js asynchronous redis node-redis

我想将Redis(数据库' 10')中的所有数据检索到JSON变量中。但我对异步通话有点困惑......我试过这个:

redis = require('redis');
client = redis.createClient();
client.send_command('select', [10], redis.print);
var r = {};
client.keys('*', function (err, keys) {
    keys.forEach(function(c){       
        client.get(c, function(err, v){     
            r[c] = v;                           
        });     
    });
});
console.log(JSON.stringify(r));
client.quit();

但我的' r' JSON变量为空...如何使用回调方法或同步代码来实现?

感谢。

1 个答案:

答案 0 :(得分:1)

我会尝试使用异步模块https://github.com/caolan/async使其异步。

redis = require('redis');
client = redis.createClient();
client.send_command('select', [10], redis.print);
var r = {};

client.keys('*', function(err, keys) {
  async.each(keys, function(key, callback) {
    client.get(key, function(err, value) {
      r[key] = value;
      callback(err);
    });
  }, function() {
    // when callback is finished
    console.log(JSON.stringify(r));
    client.quit();
  });
});

您也可以使用纤维模块https://github.com/goodeggs/fibrous

使其同步

同步代码虽然危险!