如何全局定义Redis客户端?

时间:2018-08-06 17:40:59

标签: javascript node.js redis node-redis

我有一个绑定到控制器的简单组件。因此,每个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请求打开/关闭时会崩溃

0 个答案:

没有答案