Ale*_*lls 3 redis node.js node-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]);
}
}
});
});
Run Code Online (Sandbox Code Playgroud)
但是,我如何查询 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
});
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎根本不对,必须有更好的方法
在连接准备就绪之前,node-redis 客户端会自动将您发送的所有命令排队。连接后,这些命令都会在 .on('ready') 触发之前发送。因此,您确实不需要使用 .on('ready')。如果您太早发送命令,它们仍然会按预期进行,如果您的连接完全失败,它们将永远不会被发送。
| 归档时间: |
|
| 查看次数: |
11545 次 |
| 最近记录: |