개발/Node.js

[Nest.js] CacheModule을 활용하여 Redis 연동 ( cache-manager-redis-store & tls 설정)

nofunfromdev 2022. 5. 1. 19:21

캐싱은 임시 데이터 저장소 역할을 한다.

먼저 필수 패키지를 설치한다.

$ npm install cache-manager
$ npm install -D @types/cache-manager

Nest는 cache-storage를 제공하는데 기본적으로는 in-memory이다. redis를 사용하기 위해 node-cache-manager-redis-store를 설치한다.

npm install cache-manager-redis-store --save

ConfigModule를 통해 환경변수를 불러온다.

import * as redisStore from 'cache-manager-redis-store';
import { ConfigModule, ConfigService } from "@nestjs/config";
import { CacheModule, Module } from '@nestjs/common';

@Module({
  imports: [
    CacheModule.registerAsync({
        imports: [ConfigModule],
        useFactory: async (configService: ConfigService) => ({
          store: redisStore,
          host: configService.get("REDIS_HOST"),
          port: configService.get("REDIS_PORT"),
          tls: {
              host: configService.get("REDIS_HOST"),
              rejectUnauthorized: false
          },
          auth_pass: configService.get("REDIS_AUTH_PASS"),
          ttl: +configService.get("REDIS_TTL") || 60 * 60
        }),
        inject: [ConfigService],
      })
  ]
})
export class AppModule {}

useFactory에 들어가는 옵션을 찾기 힘들었다. node-cache-manager-redis-storenode-redis를 사용하여 ts확인 후 위와 같이 적어줬다.

 

 


참고

반응형