4주2일차_인메모리 저장소_및_캐싱_전략_개요
4주2일차_인메모리 저장소_및_캐싱_전략_개요
필기 가자
redis와 Memcached의 비교
| 특성 | redis | Memcached |
|---|---|---|
| 데이터 유형 | 문자열, 리스트, 해시, 집합 등 다양한 데이터 구조 지원 | 문자열, 숫자 등 단순 Key-Value |
| 영속성 지원 | 지원 (Snapshot, Append Only File) | 지원하지 않음 |
| 분산 환경 지원 | redis Cluster | 기본적으로 지원 |
| 성능 | 빠름 | 매우 빠름 |
| 활용 사례 | 캐싱, 세션 관리, 메시지 큐, 실시간 분석 | 캐싱, 세션 관리 |
| 메모리 사용 효율성 | 상대적으로 낮음 | 상대적으로 높음 |
2. 부하 감소
- 캐싱은 데이터베이스나 API 서버의 부하를 줄이고 안정성을 높입니다.
- 빈번한 데이터 요청을 캐싱하여 시스템 성능을 최적화.
사례:
- 대규모 트래픽 처리:
- 인기 있는 블로그 게시글을 캐싱하여, 데이터베이스 부하 없이 수백만 요청 처리.
- 예시:
- 데이터 일관성 문제:
- 데이터 소스가 변경되었을 때 캐시와의 불일치 발생.
- 해결: 캐시 만료 정책(TTL) 설정.
- 메모리 용량 문제:
- 인메모리 저장소는 RAM을 사용하므로 용량이 제한됨.
- 해결: LRU(Least Recently Used) 또는 LFU(Least Frequently Used) 정책 적용.
- 캐시 무효화:
- 중요한 데이터 변경 시 캐시를 무효화하여 최신 데이터를 유지.
- 해결: 데이터 업데이트 시 캐시 제거.
3.1 Cache-aside 패턴
- 작동 방식:
- 데이터 요청 시 캐시에서 먼저 조회.
3.2 Write-through 패턴
- 작동 방식:
- 데이터 변경 요청 시, 캐시와 데이터 소스(DB 등)에 동시에 데이터 저장.
- 캐시는 항상 최신 데이터를 유지.
3.3 Write-back 패턴
- 작동 방식:
- 데이터 변경 요청 시, 캐시에만 저장하고 데이터 소스(DB 등)는 나중에 업데이트.
- 데이터 소스는 비동기로 업데이트되어 쓰기 성능을 최적화.
3.4 Write-around 패턴
- 작동 방식:
- 데이터 변경 요청 시, 데이터 소스(DB 등)에만 저장.
- 캐시는 읽기 요청 시 데이터 소스에서 조회 후 업데이트. | 패턴 | 특징 | 장점 | 단점 | | — | — | — | — | | Cache-aside | 읽기 요청 시 캐시를 먼저 조회. 없으면 DB에서 조회 후 저장. | 읽기 성능 최적화 | 캐시 미스 시 응답 시간 증가 | | Write-through | 캐시와 데이터 소스에 동시에 데이터 저장. | 데이터 일관성 유지 | 쓰기 성능 저하 | | Write-back | 캐시에만 저장하고 비동기로 데이터 소스 업데이트. | 빠른 쓰기 성능 | 데이터 손실 가능성, 일관성 문제 | | Write-around | 데이터 소스에 저장, 캐시는 읽기 요청 시 업데이트. | 쓰기 성능 최적화 | 캐시와 데이터 소스 일관성 문제 |
각 패턴은 읽기 성능, 쓰기 성능, 데이터 일관성 등의 요구 사항에 따라 선택적으로 적용해야 합니다.
- 인메모리 저장소의 한계와 고려사항 할 차례 5.2 redis-Spring boot 설정 5.2.1 프로젝트 설정 Gradle 의존성 추가: implementation ‘redis.clients:jedis:4.3.1’
Action Plan
- 각 패턴별 코드 실습
- jedis 실습 진행(현재 오류 발생)
수업 내용 필기 정리.
- write-back
- DB 저장을 비동기로 작업하는 방식. 쓰기 성능 최적화 가능함.
- 단점 :
- 예제 참고 : async update writeback.
- 4주차 예제 참고하기!
- writeaound
- 작동 방식:
- 데이터 변경 요청 시, 데이터 소스(DB 등)에만 저장.
- 캐시는 읽기 요청 시 데이터 소스에서 조회 후 업데이트.
- 읽기시
- 캐시에서 읽는다
- 캐시 미스면 본로직을 수행한다.
- 캐시 히트면 본로직을 수행하지 않는다.
- 읽기시
레디스 실습
- 레디스 설치.
- 강사님 : caffeine을 사용하심. 로컬 캐시. *
This post is licensed under CC BY 4.0 by the author.