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 |