Alo*_*wer 1 javascript redis node.js microservices nestjs
我在 NestJs 中有一个微服务,这是 main.ts 文件:
async function bootstrap() {
  const app = await NestFactory.createMicroservice<MicroserviceOptions>(AppModule, {
    transport: Transport.REDIS,
    options: {
      url: 'redis://localhost:6379',
    }
  })
  await app.listen();
  console.log('Redis is running');
}
bootstrap();
Run Code Online (Sandbox Code Playgroud)
我想从服务调用 redis db:
import { createClient } from '@redis/client';
async createWorkspaceShareCode(data: GetWorkspaceShareCodeMessage) {
    const client = createClient({
      url: 'redis://localhost:6379'
    });
    await client.connect();
    await client.set('key', 'value');
    const value = await client.get('key');
    return value;
  }
Run Code Online (Sandbox Code Playgroud)
但这不是我想要的,问题如下:
Jay*_*iel 12
我要做的就是保留你createMicroservice现有的,因为它对于基于 Redis 的微服务服务器是必要的。然后您可以创建一个导出 Redis 服务的模块,如下所示:
@Module({
  providers: [
    {
      provide: 'REDIS_OPTIONS',
      useValue: {
        url: 'redis://localhost:6379'
      }
    },
    {
      inject: ['REDIS_OPTIONS']
      provide: 'REDIS_CLIENT',
      useFactory: async (options: { url: string }) => {
        const client = createClient(options);
        await client.connect();
        return client;
      }
    }
  ],
  exports: ['REDIS_CLIENT'],
})
export class RedisModule {}
Run Code Online (Sandbox Code Playgroud)
现在,在包含要使用的服务的模块中,添加RedisModule到imports数组中,并且在服务中,您可以@Inject('REDIS_CLIENT') private readonly redis: Redis注入 Redis 实例并使用它this.redis.get('key'),this.redis.set('key', value)
我们可以从“ioredis”库导入“Redis”。它工作得很好。总而言之,我们需要redis和ioredis库。redis用于Redis 的createClient库ioredis。
1. import { createClient } from "redis";<br>
2. import { Redis } from 'ioredis';
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           12964 次  |  
        
|   最近记录:  |