String
, Set
, Sorted Set
, Hash
, List
지원Memcached
: Redis와 자주 비교되는 in-memory 저장소
Memcached와 Redis 비교
Memcached Redis 메모리에 데이터 저장 메모리 + Disk에 저장(데이터 복구 가능) 문자열만 지원 다양한 데이터 형식 지원 메모리 재사용 메모리 재사용 X 싱글 스레드 멀티 스레드 캐시 용량 큼 캐시 용량 비교적 작음
- 이 둘의 성능차이는 미비
redis로 통일해서 사용하는 것이 관리 및 확장성 측면에서 좋다...
AWS docs - Amazon ElastiCache for Redis
- 자세한 내용 별도로 포스팅 예정
- 구축 방법, 구성(클러스터, 샤딩 등), 관리
// redis-cache.module.ts
import { CacheModule, Module } from '@nestjs/common';
import * as redisStore from 'cache-manager-redis-store';
const cacheModule = CacheModule.registerAsync({
useFactory: () => ({
store: redisStore,
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
ttl: 0,
}),
});
@Module({
imports: [cacheModule],
exports: [cacheModule],
})
export class RedisCacheModule {}
ttl:0
await this.cacheManager.set('key', 'value', { ttl: 1000 });
// 캐시 관련 로직을 포함하는 파일
import { CACHE_MANAGER, Inject, Injectable } from '@nestjs/common';
import { Cache } from 'cache-manager';
@Injectable()
export class CacheService {
constructor(
@Inject(CACHE_MANAGER) private readonly cacheManager: Cache,
) {}
// 캐시에 항목 추가
await this.cacheManager.set('key', 'value');
// 캐시의 특정 항목 검색
const value = await this.cacheManager.get('key');
}
CACHE_MANAGER
토큰을 사용하여 캐시 관리자 인스턴스와 상호작용$ brew install redis
$ brew services start redis
$ redis-server
서버 정상 실행 모습
$ redis-cli
// redis-cli -h localhost -p 6380
간단한 테스트
$ redis-cli ping
// 'PONG' 으로 응답이 오면 서버 정상작동