2024.05.07 - [Spring/대용량 트래픽] - Redis Key, Scan 명령어
Cache
일시적으로 데이터를 저장하는 고속처리를 위한 임시저장소. 빠른 응답속도를 위함.
활용예시
- CPU
- L1 Cache : 각 코어별
- L2 Cache : 모든 코어가 공유
- Application
- DB, 외부 API요청 : 무거운 쿼리, 변경이 적고 접근빈도가 높은 데이터 Cache에 저장
주요용어
- Cache Hit : 캐시에 데이터있음
- Cache Miss : 캐시에 데이터없음
Hit많이 나야 캐시를 사용하는 의의가 있다!
Cache Pattern
read관점과 write관점으로 나누어 본다.
read
- cache aside 패턴
- 1. cache에 질의 (데이터 없다면){2. DB에 질의 3. DB로부터 cache에 저장}
- 3.에서 TTL을 주어 특정시간만큼만 임시저장한다.(메모리부족방지, DB변경시 일관성유지)
- DB에 write할때, cache invalidation(캐시 무효화)를 통해 일관성유지
wirte
- write-back 패턴
- 1. 서버에서 캐시에 write작업 쌓음 2. 캐시내용 일괄적으로 DB에 반영
- 캐시 가용성에 따라 데이터유실 주의!
- 복잡도가 높으면 구현 어려움
+) 추가적인 패턴들
- 대용량 트래픽 이커머스 서비스의 경우
로컬/분산 cache를 함께 사용하는 경우
- 분산 cache(1차) : 별도의 서버로 운영되는 Redis Cache
- 로컬 cache(2차) : 서버에 메모리를 캐시로써 임시저장.
DB -> 분산cache -> 로컬 cache적재
DB수정이 일어나면 분산 cache 먼저 수정되어야함.
- 하나의 서비스에 대해 여러개의 cache서버 운용 (ex. 마이크로 서비스)
이론적인 부분을 전반적으로 살펴봤고, 다음글에서는 Java로 어떻게 이걸 적용하는지 실습해보겠다.
2024.05.08 - [Spring/대용량 트래픽] - Redis Cache로 실습하기
'Spring > 대용량 트래픽' 카테고리의 다른 글
Spring Boot Cache (0) | 2024.05.08 |
---|---|
Redis Cache로 실습하기 (0) | 2024.05.08 |
Redis Key, Scan 명령어 (0) | 2024.05.07 |
Redis Transactions (0) | 2024.05.07 |
Java에서 Redis 명령어 (0) | 2024.05.03 |