구현하기 위해서는 다양한 명령어를 사용해야 한다.
→ Cache 모듈도 활용할 수 있지만, Nestjs의 Cache 모듈을 사용했을 시 에러가 다수 발생하여, 직접 만들어보기로 진행
→ 또한 NestJS 자체 모듈을 활용 시 Redis에 연결이 두번 연결되는 단점 확인
npm install ioredis
먼저 Ioredis를 설치해준다.
import { ConfigService } from '@nestjs/config';
import { Redis } from 'ioredis';
const configService = new ConfigService();
export const redisProvider = [
{
provide: 'REDIS_CLIENT',
// useFactory 구문을 사용하여 동적으로 Provider를 만드는 작업
// Provider는 인수를 받고 팩토리 함수에서 반환된 값으로 제공한다.
useFactory: async () => {
const redis = new Redis({
// Redis Config 설정
host: configService.get<string>('REDIS_HOST'),
port: configService.get<number>('REDIS_PORT'),
password: configService.get<string>('REDIS_PASSWORD'),
});
// 연결 상태 확인용 PING-PONG
const connect = await redis.ping();
if (connect === 'PONG') console.log('REDIS Connect!');
return redis;
},
},
];
import { Global, Module } from '@nestjs/common';
import { redisProvider } from './redis.provider';
@Global()
@Module({
// 비구조화 할당을 통해 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 한다.
providers: [...redisProvider],
exports: [...redisProvider],
})
export class RedisModule {}