我有一个使用Express和node_redis的Node应用程序。我遵循Learning Node一书中概述的方法,并在应用程序的生命周期中创建单个客户端。鉴于这种方法,我何时在redis客户端上调用close()
?我还需要吗?
相关代码
var express = require( 'express' ),
redis = require( 'redis' );
var app = express(),
config = require( './config/application' )[ app.get( 'env' ) ];
// create Redis client
var redisClient = redis.createClient();
redisClient.on( 'error', function( err ) {
console.log( 'Error' + err );
} );
// select the database
redisClient.select( config.redis_database );
...
/* more setup, route defintions, etc. */
...
http.createServer( app ).listen( 4000, function() {
console.log( 'Server started and ready for action!' );
});
答案 0 :(得分:6)
你有几个选择。
process.on("exit", function(){
redisClient.quit();
});
答案 1 :(得分:1)
:问题是3年前,你可能已经得到了答案,无论如何这可能对一些新人有用。
你可以让nodejs进程监听process.on('SIGINT', function() {
redisClient.quit();
console.log('redis client quit');
});
,这是通过以下代码从键盘发送的中断
Ctrl+C
然后您可以从键盘上kill -SIGINT <process id>
,或通过{{1}}发送此类信号。当发生这种情况时,将执行该代码。
这时我们不确切知道何时退出redis客户端,或者我们希望外部控制干净地退出/清除我们正在使用的资源。