【发布时间】:2015-03-06 02:36:06
【问题描述】:
我希望我的应用程序(现在让我们说一个简单的节点文件)能够正常工作,即使 redis 不可用。我无法以正确的方式做到这一点。这是我尝试过的。
var redis = require('redis');
var redisClient = null;
var getRedisClient = function(){
if(redisClient){
return redisClient;
}
try {
redisClient = redis.createClient({connect_timeout : 5000, max_attempts : 1});
redisClient.on("error", function(err) {
console.error("Error connecting to redis", err);
redisClient = null;
});
return redisClient;
} catch(ex){
console.log("error initialising redis client " + ex);
return null;
}
};
try {
var client = getRedisClient();
console.log("done!");
} catch (ex){
console.log("Exception");
}
但是,使用此代码,如果 redis 不可用,我的应用程序将退出(不应该因为我没有给出 process.exit() 命令)。
我该如何解决这个问题?
【问题讨论】:
-
我认为您的应用程序退出了,因为它没有什么可做的了。添加服务器什么的。
-
@Farid 不,如果 redis 开启,应用程序不会退出。
-
当redis不在应用程序存在时,因为它无关。当 redis 开启时,与 redis 服务器有一个持久连接,并且应用程序不会退出,因为连接没有关闭。只有在没有连接/服务器/事件或任何其他类型的 IO 时,节点才会关闭。
-
所以你是说这段代码没问题?
-
对我来说看起来不错,但你不知道代码是否完美,直到它在生产中测试......:P
标签: node.js redis node-redis