[typescript] Nest.js에서 타입스크립트를 사용한 캐싱 구현
Nest.js는 Node.js를 위한 프레임워크로, 타입스크립트를 기반으로 하며, 효율적인 웹 애플리케이션을 빠르게 구축할 수 있는 기능들을 제공합니다. 이번 포스트에서는 Nest.js와 타입스크립트를 사용하여 간단한 캐싱 시스템을 구현하는 방법을 다룰 것입니다.
1. Nest.js 프로젝트 설정
먼저 Nest.js 프로젝트를 생성하고 의존성 패키지를 설치합니다.
npm install --save @nestjs/common
npm install --save @nestjs/config
npm install --save redis
npm install --save cache-manager
npm install --save class-transformer
npm install --save class-validator
2. Redis를 이용한 캐싱 모듈 설정
Nest.js에서는 CacheModule
을 사용하여 캐싱을 구현할 수 있습니다. 먼저, Redis
를 캐시 백엔드로 사용하기 위해 CacheModule.register()
를 이용하여 Redis 옵션을 설정합니다.
import { CacheModule, Module } from '@nestjs/common';
import * as redisStore from 'cache-manager-redis-store';
@Module({
imports: [
CacheModule.register({
store: redisStore,
host: 'localhost',
port: 6379,
}),
],
})
export class AppModule {}
3. 캐싱 서비스 구현
다음으로, 실제 캐싱 기능을 하는 서비스를 구현해봅시다.
import { Injectable, CacheInterceptor } from '@nestjs/common';
import { CacheKey, CacheTTL } from '@nestjs/common';
import { Cache } from 'cache-manager';
@Injectable()
export class CachingService {
constructor(@Inject('Cache') private readonly cache: Cache) {}
@CacheKey('data')
@CacheTTL(60) // Cache for 60 seconds
async getCachedData(): Promise<any> {
const data = await this.cache.get('data');
if (data) {
return data;
} else {
// Fetch data from database or any other source
const newData = '...'; // Fetch data from database or any other source
await this.cache.set('data', newData);
return newData;
}
}
}
4. 캐싱 서비스 활용
이제 캐싱 서비스를 다른 모듈이나 컨트롤러에서 활용할 수 있습니다.
import { Controller, Get } from '@nestjs/common';
import { CachingService } from './caching.service';
@Controller('data')
export class DataController {
constructor(private readonly cachingService: CachingService) {}
@Get()
async getData(): Promise<any> {
return this.cachingService.getCachedData();
}
}
위와 같이 Nest.js와 타입스크립트를 이용하여 간단한 캐싱 시스템을 구현할 수 있습니다. 이를 통해 애플리케이션의 성능을 향상시키고, 중복된 데이터를 효율적으로 처리할 수 있습니다.