학습목표
- Redis의 기본 개념과 기술적 전략을 이해한다
1. Redis란 무엇인가
- remote directory server의 약자로, 메모리 기반의 고성능 데이터 저장소
- 주로 캐시, 메시지 브로커, 세션 저장소로 사용
- key-value 구조와 다양한 데이터 타입 지원
2. 사용 사례
2.1 캐시
- 자주 사용되는 데이터를 메모리에 저장해 빠르게 응답
- 메모리 기반이기 때문에, 디스크 기반인 데이터베이스보다 빠르게 데이터를 읽고 쓸 수 있음
- 성능을 극대화하고 어플리케이션의 응답 시간을 단축
- 대형 쇼핑몰에서 상품 목록을 캐시하여, 디비 조회를 줄이고 사용자에게 즉시 응답 제공
- SET product:12345 "{name:'laptop', price:1000, stock:50}
- GET product:12345
2.2 세션 저장소
- 세션 관리에 적합
- 전통적으로 세션은 디비나 어플리케이션 서버에 저장되었으나 레디스는 그보다 빠른 처리 속도와 데이터 관리 기능 제공
- 로그인 상태 유지 및 카트 정보 저장
- TTL 기능으로 해당 설정을 통해 세션 정보를 자동으로 만료 시킬 수 있음
- 전자상거래 사이트에서 사용자의 로그인 세션과 장바구니 정보를 레디스에 저장하여 빠른 응답 제공
- SET session:12345 "{user:'john_doe', cart:[]}"
- GET session:12345
3. 주요 특징
3.1 메모리 기반
- redis는 메모리 기반으로 동작
- 디스크 I/O에 비해 훨씬 빠른 속도로 데이터를 읽고 쓰기 가능
- redis 가 주로 실시간 데이터 처리 및 고속 캐싱 솔루션으로 사용되는 이유 중 하나
3.2 영속성 옵션
Redis의 데이터를 메모리뿐만 아니라 디스크에 저장하여 서버가 재시작되더라도 데이터를 복구할 수 있도록 하는 기능을 의미
Redis는 인메모리 데이터베이스지만, 영속성을 설정하면 메모리의 데이터를 디스크에 백업할 수 있다.
- rdb(redis database) 스냅샷 : 주기적으로 전체 데이터를 디스크에 저장
- 정해진 시점마다 메모리 상태를 스냅샷으로 저장(dump.rdb)
- 설정 파일에서 save 옵션으로 주기 설정 가능 (예: save 900 1 → 900초 동안 1개 이상 키 변경 시 저장)
- 파일이 단일 파일이라서 전송 및 백업에 유리
- 복구 속도가 빠름
- aof (append-only file) : 데이터 변경 로그를 저장해 시스템 재시작 시 복구 가능
- 모든 write 명령어를 로그로 기록
- appendonly.aof 파일에 명령어 순서대로 저장
- Redis 재시작 시 AOF를 재실행해서 상태 복구
- 데이터 유실 가능성 최소화 (설정에 따라 1초 이내 유실 가능)
- 파일 크기가 커질 수 있으며, 복구 시간이 오래걸릴 가능성
3.3 다양한 데이터 기반
- String : 가장 기본적인 Key-value 타입으로, 문자열, 숫자 등의 데이터 저장
- List : 순서가 있는 데이터의 목록으로, 삽입 및 삭제가 O(1) 시간 복잡도로 가능
- Set: 중복 없는 데이터의 집합으로, 집합 연산(교집합, 차집합 등)을 빠르게 수행
- Sorted Set(ZSet) : 점수를 기준으로 정렬된 집합. 순위, 리더보드 등의 구현에 응용
- Hash: 필드-값 쌍으로 구성된 Key-value의 집합. 복잡한 객체를 저장할 때 유용
- Bitmaps: 비트 값을 저장하며, 비트 연산을 빠르게 수행
- HyperLogLog: 메모리를 거의 사용하지 않으면서 고유 값의 개수를 추정하는 데이터 구조
4. 기술적 전략
장애가 발생해도 Redis 서비스를 지속적으로 제공할 수 있도록 구성. Redis는 기본적으로 단일 인스턴스로 동작하지만, 장애 복구, 무중단 운영, 데이터 무결성을 위해 고가용성 구성이 필요.
4.1 복제 (Replication)
- Redis는 Master-slave 복제 구조를 지원하여 데이터 가용성을 높이고, 읽기 부하를 분산할 수 있음
- master는 데이터를 쓰고, slave는 데이터를 읽는 구조로, 읽기 성능 향상 및 데이터 백업을 제공
- 읽기 부하 분산

4.2 고가용성
- redis는 sentinel이라는 기능을 통해 자동 복구 및 장애 조치를 지원
- sentinel은 redis 인스턴스를 모니터링하고 master 노드에 장애가 발생하면 자동으로 slave 노드를 승격하여 서비스를 중단없이 운영

4.3 클러스터링
- redis는 cluster 기능을 통해 데이터를 여러 노드에 분산 저장하고, 수평적 확장성을 제공
- 대규모 데이터를 다루는 환경에서도 성능 저하 없이 확장이 가능
- 클러스터는 자동으로 데이터를 노드 간 분산시키며, 각 노드는 해시 슬롯을 통해 데이터를 관리

5. 아키텍쳐 개요
5.1 싱글 스레드 모델
- redis는 싱글 스레드로 동작하며, 하나의 요청을 한 번에 처리
- 클라이언트 요청 → 파싱 → 명령 실행 → 응답 반환
⬆️ 이 모든 과정을 하나의 메인 스레드에서 처리함
- 클라이언트 요청 → 파싱 → 명령 실행 → 응답 반환
- i/o 성능을 극대화하는 구조로 설계되어 여러 요청을 매우 빠르게 처리할 수 있음
- 싱글 스레드 모델 덕분에 락 경합이 없고, 프로세스가 경량화되어 성능 저하 없이 빠르게 동작
- 멀티스레드에 필요한 락 관리가 없어 효율적

5.2 비동기 I/O
- Redis는 비동기 I/O 모델을 채택하여, 네트워크 요청이나 파일 쓰기와 같은 I/O 작업을 논블로킹으로 처리
- 이로 인해 네트워크 대기 시간을 줄이고 많은 요청을 동시에 처리하는 데 있어 높은 성능을 발휘

레디스 실습 먼저 하고 올리는 기본 개념 ㅎ_ㅎ..
참고, 강의 및 chatgpt
1티어 패션 커머스의 세일 도메인 프로젝트로 배우는 대규모 트래픽을 견디는 실전 백엔드의 모
실전 대용량 트래픽 처리의 모든 것! 대규모 시스템 설계부터 기능 구현, 테스트까지!
fastcampus.co.kr
'대용량 시스템 > 02. Redis' 카테고리의 다른 글
| [Redis] #1.2 데이터 타입 및 사용 사례 (2) | 2025.06.29 |
|---|---|
| [Redis] #2.2 기본 명령어 실습 (0) | 2025.06.27 |
| [Redis] #2.1 환경 설정 (2) | 2025.06.19 |