【问题标题】:How to get all data from Redis to JSON如何将所有数据从 Redis 获取到 JSON
【发布时间】:2014-06-14 11:27:01
【问题描述】:

我想将所有数据从 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 变量是空的...如何使用回调方法或同步代码来做到这一点?

谢谢。

【问题讨论】:

  • 我无法与 node.js 部分交谈,但我强烈建议使用 SCAN 而不是 KEYS。

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


【解决方案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

虽然同步代码很危险!

【讨论】:

  • 运行良好并允许获取键/值 JSON 变量。谢谢。
猜你喜欢
  • 2014-06-16
  • 2017-04-03
  • 2016-02-18
  • 2016-09-23
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 2013-10-06
相关资源
最近更新 更多