Redis
Remote Dictionary Server
Introduction to Redis
Redis 특징
In-Memory
Single Thread
- 단일 Thread 기반으로 모든 Task 처리
Cluster Mode
- 다중 노드에 데이터를 분산 저장
- 안정성, 고가용성 제공
Persistence
- RDB, AOF를 통해 영속성 옵션 제공
- RDB (Redis Database)
- AOF (Append only File)
Pub / Sub
- Publish / Subscribe 패턴을 지원
- 손쉬운 Application 개발
Redis 장점
- 높은 성능
- 모든 데이터를 메모리에 저장하기 때문에 매우 빠른 읽기/쓰기 속도 보장
- Data Type 지원
- 클라이언트 라이브러리 지원
- 다양한 사례 / 강한 커뮤니티
Redis 사용 사례
Caching
- 임시 비밀번호 (OTP)
- 로그인 세션 (Sessions)
Rate Limiter
- Fixed-Window Rate Limiter
- Sliding-Window Rate Limiter
Message Broker
실시간 분석 / 계산
실시간 채팅
Persistence
- Redis는 주로 캐시로 사용되지만, 데이터 영속성을 위한 옵션 제공
- SSD와 같은 영구적인 저장 장치에 데이터 저장
RDB (Redis Database)
- Point-in-time Snapshot
- Disaster Recovery 또는 복제에 주로 사용
💡 일부 데이터 유실의 위험이 있음
스냅샷 생성 중 클라이언트 요청 지연 발생
AOF (Append Only File)
- Redis에 적용되는 Wrtie 작업을 모두 log로 저장
- 데이터 유실 위험이 적다.
- 하지만, 재난 복구시 Write 작업을 다시 적용하기 때문에 RDB보다 느림
💡 RDB + AOF 함께 사용하는 옵션 제공
Caching
데이터를 빠르게 읽고 처리하기 위해 임시로 저장하는 기술
Cache Hit / Miss
Cache Strategy
Cache Strategies
Cache-Aside
- 데이터가 요청되면 애플리케이션은 먼저 캐시를 확인합니다.
- 데이터가 캐시에 없으면 데이터베이스에서 검색하여 나중에 사용할 수 있도록 캐시에 저장합니다.
- 이 전략은 간단하고 유연하지만 캐시를 최신 상태로 유지하려면 캐시를 주의 깊게 관리해야 합니다.
Write-Through
- 이 전략에서는 데이터가 캐시와 데이터베이스에 동시에 기록됩니다.
- 데이터가 업데이트되면 캐시와 데이터베이스에 동시에 기록됩니다.
- 이렇게 하면 캐시에 항상 최신 데이터가 포함되지만 쓰기 작업 속도가 느려질 수 있습니다.
Wrtie-Behind
- 이 전략에서는 데이터가 먼저 캐시에 기록되고 나중에 데이터베이스에 기록됩니다.
- 이를 통해 쓰기 작업이 더 빨라지지만 캐시가 제대로 관리되지 않으면 데이터 불일치가 발생할 수 있습니다.
Read-Through
- 이 전략에서는 캐시가 기본 데이터 원본으로 사용됩니다.
- 데이터가 요청되면 캐시를 먼저 확인합니다.
- 데이터가 캐시에 없으면 데이터베이스에서 검색하여 나중에 사용할 수 있도록 캐시에 저장합니다.
- 이 전략은 데이터베이스가 느리거나 데이터를 자주 읽지만 거의 업데이트되지 않는 경우에 유용할 수 있습니다.