NestJS-在自定义提供程序中设置redis订阅服务器的正确方法

NestJS-在自定义提供程序中设置redis订阅服务器的正确方法,redis,nestjs,node-redis,Redis,Nestjs,Node Redis,我正在构建一个简单的应用程序,它将订阅redis数据库中的多个频道 给定redis服务中的以下代码: //redis.service.ts 从'@nestjs/common'导入{Injectable}; const NRP=require('node-redis-pubsub'); 常量配置={ 港口:6379, }; @可注射() 出口类再贴现服务{ 私有NRP客户端=新NRP(配置) 构造函数(){ 这是simpleListener() } simpleListener(){ 此.nrpC

我正在构建一个简单的应用程序,它将订阅redis数据库中的多个频道

给定redis服务中的以下代码:

//redis.service.ts
从'@nestjs/common'导入{Injectable};
const NRP=require('node-redis-pubsub');
常量配置={
港口:6379,
};
@可注射()
出口类再贴现服务{
私有NRP客户端=新NRP(配置)
构造函数(){
这是simpleListener()
}
simpleListener(){
此.nrpClient.on('__keyspace@0__:mykey',(数据)=>{
console.log(数据)
})
}
}
以及redis模块中的代码:

//redis.module.ts
从'@nestjs/common'导入{Module};
从“/redis.service”导入{RedisService};
@模块({
提供者:[再贴现服务]
})
导出类模块{}
我已达到应用程序的预期行为。
如果我在我的
redis cli中输入会话并运行:

127.0.0.1:6379>SADD mykey“测试”
然后,NestJS记录器打印以下内容:

[Nest] 306987   - 05/04/2021, 9:01:41 PM   [NestApplication] Nest application successfully started +5ms
sadd
我这里的问题是关于我的实现设计,而不是它的功能。
关于这个主题的例子和文档非常缺乏,所以我根据自己的直觉,根据推荐编写了上面的代码

然后,假设提供的类如果在redis模块中注册为“提供者”,那么它将是一个单例类,我只需这样做,并在redis服务构造函数中调用创建订阅的函数

我只是担心在构建定制的NestJS提供程序时没有遵循最好的指导原则,而且我也不知道在构造函数中设置侦听器是否是最好的主意

这是实现所需行为的最佳/正确方法吗