首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >共享node-redis连接nodejs

共享node-redis连接nodejs
EN

Stack Overflow用户
提问于 2020-06-04 20:37:18
回答 1查看 273关注 0票数 0

使用nodejs和node-redis。

我有一个单独的条目"server.ts“文件,它引导连接,比如mongoose。

Mongoose,然后自动共享到mongodb的连接,以便稍后在应用程序中,我可以只点击此连接并查询数据库。

使用node-redis,这看起来根本不会发生。相反,连接被调用到一个局部变量中,然后留给开发人员处理。

这里有没有一个最佳实践,或者只是把它放到全局名称空间中?

代码语言:javascript
复制
global.REDIS_CONNECTION = new redis.createClient(options)
EN

回答 1

Stack Overflow用户

发布于 2020-06-04 21:17:53

更好的模式是创建一个单例:

代码语言:javascript
复制
export class RedisService {
  private static instance: RedisService | null = null;

  private connection!: RedisConnection;

  private constructor() {}

  public static async getConnection(): Promise<RedisService> {
    if (RedisService.instance == null) {
      await RedisService.initInstance();
    }
    return RedisService.instance;
  }

  private static async initInstance(): Promise<void> {
    RedisService.instance = new RedisService();
    RedisService.instance.connection = new redis.createClient(options);
    // Check connection
    await RedisService.instance.connection.check();
  }

  // ...

  public async getItem(): Promise<any> {
    this.connection.getItem(/* ... */);
  }

  public async setItem(): Promise<any> {
    this.connection.setItem(/* ... */);
  }
}

并像这样使用它:

代码语言:javascript
复制
redisService = await RedisService.getInstance();
redisService.getItem(/*...*/);

RedisService封装了在redis上检索/设置信息的逻辑,并抽象了redis库的使用。

如果您将来开始使用Nestjs或Awilix,这也是迈向依赖注入的一步。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62194787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档