NestJS에서 Redis: 당신이 몰랐던 RedisX 솔루션
Source: Dev.to
Introduction
NestJS 애플리케이션에서 Redis 작업을 위해 여러 라이브러리를 뒤섞어 쓰는 것이 지겹나요? NestJS RedisX를 만나보세요 – 캐싱, 락, 레이트 리밋 등 다양한 기능을 단일 Redis 연결 하나만으로 제공하는 올인원 툴킷입니다. 이를 통해 복잡성이 줄어들고 설정이 중앙 집중화됩니다.
Features
RedisX는 모듈형 플러그인 시스템을 기반으로 합니다. 필요한 것만 설치하세요:
@nestjs-redisx/cache– 스탬프ede 방지 기능이 포함된 L1/L2 캐싱.@nestjs-redisx/locks– 자동 갱신이 가능한 분산 락.@nestjs-redisx/rate-limit– 다양한 레이트 리밋 전략.@nestjs-redisx/idempotency– 요청 멱등성 보장.@nestjs-redisx/streams– 이벤트‑드리븐 아키텍처 지원.@nestjs-redisx/metrics– Prometheus 메트릭 통합.@nestjs-redisx/tracing– OpenTelemetry 트레이싱 지원.
Installation
npm install @nestjs-redisx/core @nestjs-redisx/cache @nestjs-redisx/locks
필요한 추가 플러그인은 같은 명령어에 포함시켜 설치하면 됩니다.
Setup Example
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { RedisModule } from '@nestjs-redisx/core';
import { CachePlugin } from '@nestjs-redisx/cache';
import { LocksPlugin } from '@nestjs-redisx/locks';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
RedisModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
plugins: [
CachePlugin.registerAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: (config: ConfigService) => ({
l1: { enabled: true, maxSize: 1000, ttl: 60 },
defaultTtl: config.get('CACHE_TTL', 300),
}),
}),
new LocksPlugin({ retryAttempts: 3, retryDelay: 200 }),
],
useFactory: (config: ConfigService) => ({
clients: {
type: 'single',
host: config.get('REDIS_HOST', 'localhost'),
port: config.get('REDIS_PORT', 6379),
},
}),
}),
],
})
export class AppModule {}
Conclusion
RedisX는 NestJS 애플리케이션에서 Redis 통합을 깔끔하고 통합된 방식으로 제공합니다. 이제 여러 연결을 관리할 필요 없이 핵심 기능 개발에 집중할 수 있습니다. 자세한 내용은 공식 문서와 GitHub 저장소를 참고하세요.