使用nodejs和node-redis。
我有一个单独的条目"server.ts“文件,它引导连接,比如mongoose。
Mongoose,然后自动共享到mongodb的连接,以便稍后在应用程序中,我可以只点击此连接并查询数据库。
使用node-redis,这看起来根本不会发生。相反,连接被调用到一个局部变量中,然后留给开发人员处理。
这里有没有一个最佳实践,或者只是把它放到全局名称空间中?
global.REDIS_CONNECTION = new redis.createClient(options)发布于 2020-06-04 21:17:53
更好的模式是创建一个单例:
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(/* ... */);
}
}并像这样使用它:
redisService = await RedisService.getInstance();
redisService.getItem(/*...*/);RedisService封装了在redis上检索/设置信息的逻辑,并抽象了redis库的使用。
如果您将来开始使用Nestjs或Awilix,这也是迈向依赖注入的一步。
https://stackoverflow.com/questions/62194787
复制相似问题