我正在为Node.js使用Redis NPM库 - 我可以像这样监听连接'ready'事件
var client = require('redis).createClient();
client.on('ready', function () {
client.keys('*', function (err, keys) {
if (err) {
log.error(err);
} else {
for (var i = 0; i < keys.length; i++) {
createLocalDataMap(keys[i]);
}
}
});
});
但是,我如何查询Redis以查看它是否已准备就绪,而不是在我准备好处理之前侦听可能会触发的事件?
我想我可以放弃准备好的事件,只是做一个查询然后等待响应,但是有更好,更安全和更复杂的方式吗?
换句话说,我很可能必须写一个这样的函数:
var isReady = false;
client.on('ready', function(){
isReady = true;
});
function doSomethingMuchLater(){
if(isReady){
//query redis as normal
}
else {
client.on('ready', function(){
isReady = true;
//now I do what I wanted to do
});
}
}
这似乎不对,必须有更好的方法
node-redis客户端会在连接准备好之前自动对您发送的任何命令进行排队。一旦连接,这些命令都会在.on('ready')之前发送。因此,你真的不需要使用.on('ready')。如果您过早发送命令,它们仍会按预期运行,如果您的连接完全失败,它们将永远不会被发送。