Redis客户端(“准备”)事件

我正在使用Node.js的Redis NPM库 – 我可以像这样监听连接“就绪”事件

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')。 如果你发送的命令太早,他们仍然会按照预期进行,如果你的连接完全失败,他们将永远不会被发送。