我有一个绑定到控制器的简单组件。因此,每个HTTP请求都会调用testFunction():
//test.js
const redisHelper = require('../myRedis');
class TEST {
testFunction() {
....
redisHelper.getCache(cacheKey)
.then((cacheData) => {
....
}
}
module.exports = TEST;
此组件需要myRedis模块:
//myRedis.js
const redis = require('redis');
class myRedis {
constructor () {
....
this.redisClient = this.getRedisClient();
}
getRedisClient () {
let redisClient;
....
return redisClient;
}
getCache (key) {
....
}
quit () {
this.redisClient.quit();
}
}
module.exports = new myRedis();
我不想为每个HTTP请求都创建Redis客户端,但是要保持打开/打开状态。那么我可以在app.js中声明redis客户端并在test.js中使用它吗?然后在进程出口上,我将关闭连接。
process.on('SIGTERM', () => { server.close(() => { redisClient.quit(); process.exit(); }) })
问题在于redis客户端在为数千个HTTP请求打开/关闭时会崩溃