Node.js + Express + Redis什么时候closures连接?
我有一个使用Express和node_redis的节点应用程序。 我遵循学习节点手册中概述的方法,并为应用程序的整个生命周期创build单个客户端。 鉴于这种方法,我什么时候在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!' ); });
你有几个选项。
- 懒惰,并为redis服务器上的所有客户端设置空闲超时。 然后,当一个客户端闲置太久,服务器就会杀死他们的连接。
- 节点进程退出时终止连接。
。
process.on("exit", function(){ redisClient.quit(); });
:问题是3年前,你可能已经得到答案,无论如何,这可能是有用的一些新的人。
您可以让nodejs进程侦听通过以下代码从键盘发送的中断的SIGINT
process.on('SIGINT', function() { redisClient.quit(); console.log('redis client quit'); });
然后你可以从键盘上Ctrl+C
,或者通过kill -SIGINT <process id>
发送这样的信号。 当发生这种情况时,该代码将被执行。
这是当我们不知道什么时候退出Redis客户端,或者我们希望外部控制干净地退出/清除我们正在使用的资源。
- 基于Express和Mongoose的REST API – 在将对象返回给用户之前,过滤掉对象的某些属性
- 如何访问node.js Express 2.5.5中单独的path文件中的主app.js中声明的variables?
- express(4.0)定制中间件在路由器的两个实例上运行,即使它只声明为一个
- 使用Express上传文件失败:“无法读取未定义的属性文件”
- 将variables传递给nodemailer中的html模板
- 节点JS – 构造一个OAuth2请求
- 如何使用Express-JWT处理错误
- 如何在Express中获取POST字段,而不使用bodyParser中间件?
- 在connect / express中使用cookieSession()时,为会话设置单独的maxAge