我想将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变量为空...如何使用回调方法或同步代码来实现?
感谢。
答案 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
使其同步同步代码虽然危险!