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

标签 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 变量是空的...我如何使用回调方法或同步代码来做到这一点?

谢谢。

最佳答案

我会尝试使用异步模块 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();
  });
});

你也可以使用 fibrous 模块使其同步 https://github.com/goodeggs/fibrous

虽然同步代码很危险!

关于json - 如何从Redis获取所有数据到JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23349179/

相关文章:

node.js - 当 Content-Type 为 text/csv 时 Sails.js 正文内容

带有 json 字符串的 C# mongo 查询

c# - 将特定枚举反序列化为 Json.Net 中的 system.enum

java - JsonIgnore 不适用于 Spring

node.js - 单个 node.js http 服务器接受多个主机名上的连接

javascript - 糟糕的 Node js API 性能,使用率非常低

c# - WPF 等待从 UI 线程切换

javascript - jQuery 多个延迟在返回之前解析和处理

c# - 如何在带有 Firebase 的 Unity 中使用异步

java - 通过 ajax 调用调用操作方法时出现意外行为