Redis客户端 - on('ready')事件

问题描述 投票:1回答:1

我正在为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.js redis node-redis
1个回答
2
投票

node-redis客户端会在连接准备好之前自动对您发送的任何命令进行排队。一旦连接,这些命令都会在.on('ready')之前发送。因此,你真的不需要使用.on('ready')。如果您过早发送命令,它们仍会按预期运行,如果您的连接完全失败,它们将永远不会被发送。

© www.soinside.com 2019 - 2024. All rights reserved.