34 lines
975 B
TypeScript
34 lines
975 B
TypeScript
import { Module, Global } from '@nestjs/common';
|
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
import Redis from 'ioredis';
|
|
import { RedisService } from './redis.service';
|
|
|
|
export const REDIS_CLIENT = Symbol('REDIS_CLIENT');
|
|
|
|
@Global()
|
|
@Module({
|
|
imports: [ConfigModule],
|
|
providers: [
|
|
{
|
|
provide: REDIS_CLIENT,
|
|
useFactory: (configService: ConfigService) => {
|
|
return new Redis({
|
|
host: configService.get('REDIS_HOST', 'localhost'),
|
|
port: configService.get('REDIS_PORT', 6379),
|
|
password: configService.get('REDIS_PASSWORD') || undefined,
|
|
db: configService.get('REDIS_DB', 0),
|
|
retryStrategy: (times) => {
|
|
const delay = Math.min(times * 50, 2000);
|
|
return delay;
|
|
},
|
|
maxRetriesPerRequest: 3,
|
|
});
|
|
},
|
|
inject: [ConfigService],
|
|
},
|
|
RedisService,
|
|
],
|
|
exports: [RedisService, REDIS_CLIENT],
|
|
})
|
|
export class RedisModule {}
|