NestJS Redis Util

Redis는 Remote Dictionary Server의 약자로 오픈 소스 기반으로 In-memory 데이터 구조 저장소에 키(Key) - 값(Value) 쌍의 해시 맵과 같은 구조를 가진 비관계형(NoSQL) 데이터를 저장 및 관리하는 데이터베이스 관리 시스템을 말합니다.

 

현재 많은 백엔드 프로젝트에서 Redis 저장소를 많이 사용하고 있으며, 테크팀 역시 스프링 프로젝트에서 캐시데이터 및 세션, 그리고 각 업무단 비즈니스 로직에서 데이터 저장소로 활용하고 있습니다.

 

NestJS 프로젝트 역시 캐시 및 데이터 저장소로 활용하기 위하여 Redis 저장소가 필요하였기 때문에 다음과 같이 Redis Util을 추가하였습니다.

 

"dependencies": {
    "ioredis": "^5.3.2",
 },
 "devDependencies": {
    "@types/ioredis": "^5.0.0",
 },

package.json에 다음을 추가하고 패키지를 설치하자.

 

import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import Redis from 'ioredis';

@Injectable()
export class RedisUtilService {
  private redisConnect;

  constructor(private configService: ConfigService) {
    const host = this.configService.get<string>('app.redis.host');
    const port = this.configService.get<number>('app.redis.port', 6379);
    const password = this.configService.get<string>('app.redis.password');

    this.redisConnect = new Redis({
      host,
      port,
      password,
    });
  }

  async get(key: string): Promise<any> {
    return await this.redisConnect.get(key);
  }

  async set(key: string, value: any, ttl?: number | null | undefined) {
    if (ttl && Number(ttl) > 0) {
      await this.redisConnect.set(key, value, 'EX', Number(ttl));
    } else {
      await this.redisConnect.set(key, value);
    }
  }

  async del(key: string) {
    await this.redisConnect.del(key);
  }
}

다음과 같이 공식 문서에 나온대로 get, set, del 함수를 만들어주면 된다

 

providers: [
    // RedisUtilService 설정
    RedisUtilService,
]

 public async getRedisTest(): Promise<any> {
    await this.redisUtilService.set('test1', 'kang1', 60);
    const data = await this.redisUtilService.get('test1');
    console.log(data);
  }

RedisUtilService을 providers에 설정하고 테스트 함수를 작성해서 확인해보자

 

다음과 같이 레디스 저장소에 정상적으로 저장된 것을 확인할 수 있습니다.

 

이상 Redis Util 대한 글을 마치며, 다음글에서는 Cache 및  Redis Cache대해 간단하게 설명하도록 하겠습니다.

'Backend(Framework) > NestJS' 카테고리의 다른 글

NestJS Task Scheduling  (1) 2023.12.02
NestJS Health Check  (1) 2023.12.02
NestJS Cors와 Cookie설정  (0) 2023.12.02
NestJS Yaml 파일 설정 관리  (1) 2023.12.02
NestJS 스웨거(Swagger) 설정  (1) 2023.12.02
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유