4주4일차_redis와_캐싱_전략_최적화_실습
4주4일차_redis와_캐싱_전략_최적화_실습
필기 가자
1.1 Cache-aside 패턴 구현 실습 목표:
- 데이터를 캐시에만 우선 저장하고, 비동기로 데이터베이스를 업데이트하는 로직을 구현합니다.
- 데이터 업데이트 시의 성능 차이와 비동기 작업의 동작을 확인합니다.
비교
| 전략 | 데이터 일관성 | 성능 | 주요 사용 사례 |
|---|---|---|---|
| Cache-aside | 중간 | 읽기 성능 최적화 | 읽기 요청이 빈번한 애플리케이션 |
| Write-through | 강한 | 쓰기 성능 저하 가능 | 캐시와 데이터 일관성을 유지해야 하는 애플리케이션 |
| Write-back | 약한 | 쓰기 성능 최적화 | 쓰기 요청이 빈번하고, 데이터 일관성이 즉시 필요하지 않은 경우 |
실습 팁:
- 각 패턴의 장단점을 직접 비교하며 캐싱 전략 선택의 기준을 이해합니다.
- 실습 결과를 통해 특정 전략이 성능에 미치는 영향을 분석합니다
2.2 LRU (Least Recently Used) 및 LFU (Least Frequently Used) 정책 LRU 정책: 가장 오랫동안 사용되지 않은 데이터를 우선적으로 제거합니다. 메모리 제한이 있는 환경에서 자주 사용되며, redis 기본 제거 정책입니다. LFU 정책: 사용 빈도가 가장 낮은 데이터를 제거합니다. 특정 데이터의 사용 패턴에 따라 캐시 효율성을 높일 수 있습니다. 설정 방법: maxmemory-policy 설정을 통해 캐시 제거 정책을 변경할 수 있습니다. CONFIG SET maxmemory-policy allkeys-lru # 모든 키에 대해 LRU 정책 사용 CONFIG SET maxmemory-policy volatile-lru # 만료 시간이 설정된 키에만 LRU 사용 CONFIG SET maxmemory-policy allkeys-lfu # 모든 키에 대해 LFU 정책 사용
3.2 redis와 데이터베이스 동기화 전략
redis와 데이터베이스 간 동기화를 위해 다양한 전략을 Cache Aside + Write-through
- 설명:
- 읽기(Read): 캐시에 데이터가 없으면(Cache miss), 데이터베이스에서 읽어 캐시에 저장(Cache Aside).
- 쓰기(Write): 데이터베이스와 캐시에 동시에 데이터를 갱신(Write-through).
- 장점:
- 읽기 성능 최적화 및 일관성 유지.
- 단점:
- 쓰기 성능이 저하될 가능성 있음.
Event-driven 동기화
- 설명:
- 데이터베이스 변경 시 이벤트를 트리거하여 redis 캐시를 업데이트.
- 메시지 큐(Kafka, RabbitMQ 등) 또는 데이터베이스 트리거를 활용.
- 장점:
- 변경 이벤트를 기반으로 실시간 캐시 갱신.
- 높은 쓰기 성능 제공.
- 단점:
- 이벤트 처리 실패 시 데이터 불일치 발생 가능.
Action Plan
각 패턴 별 구현 실습
수업 내용 필기 정리.
This post is licensed under CC BY 4.0 by the author.