Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스프링 컨테이너와 스프링 빈
- 백준 13460 Python
- Kotlin in action 3장
- 코틸린인액션
- Kotlin in action 5장
- 스프링 핵심 원리
- Kotlin in action 10장
- Python
- Kotlin
- 코틀린
- 백준
- 싱글톤 컨테이너
- kotlin in action 정리
- Kotlin In Action
- 20055 컨베이어 벨트 위의 로봇
- 백준 20055 컨베이어 벨트 위의 로봇
- 코틀린인액션
- 컨베이어 벨트 위의 로봇 Python
- 13460 구슬탈출 2
- 자바 ORM 표준 JPA 프로그래밍 7장
- Kotlin in action 6장
- 스프링 핵심 원리 이해
- 20055
- 고급매핑
- 스프링 핵심 원리 - 기본편
- KotlinInAction
- 객체 지향 설계와 스프링
- spring
- 기능개발 python
- 7장 고급매핑
Archives
- Today
- Total
기록하는 습관
[Research] Redis 캐싱 전략 본문
1) 지연 로딩 (Lazy Loading)
- 개념
- 클라이언트에게 데이터 요청이 들어올 때, Cache에 로딩한다.
- DB나 API에 접근하기 전, Cache에 접근하여 원하는 데이터가 존재할 경우 Cache 데이터를 활용한다.
- 없으면, DB나 API에 접근하여 데이터를 가져와 Cache에 올린다.
- 장점
- 요청받은 데이터만 Cache에 저장 (→ 파르토 법칙에 따라 엄청난 효율성을 불러온다.)
- 캐시에 존재하지 않는 데이터를 DB에서 가져오며, 후에 캐시에 저장하기 때문에 Cache Miss에 치명적이지 않다.
- 단점
- 캐시 미스가 많아질수록 딜레이가 심해진다.
- 캐시 미스 발생시, 캐시에 데이터를 쓴다. 이는, 캐시의 데이터가 최신의 상태를 유지 못할 수도 있음을 의미한다.
2) Write Through
- 개념
- 데이터를 추가하거나 수정할 때, Cache와 DB 모두 동시에 업데이트 된다.
- 첫 번째로 cache write, 두 번째로 DB write.
- 데이터를 추가하거나 수정할 때, Cache와 DB 모두 동시에 업데이트 된다.
- 장점
- 캐시가 항상 최신의 데이터를 갖는다. (항상 동기화 되어 있음)
- 단점
- 값을 쓰거나 업데이트할 때, 항상 두 번의 패널티를 갖는다.
- 새로운 노드가 추가될 경우 데이터를 찾지 못할 수도 있다. 새로운 노드에 해당 데이터가 없기 때문.
- 대부분의 데이터가 읽히지 않으므로 리소스가 낭비될 수 있다.
3) Read Through
- 개념
- 먼저 cache에서 읽고, 캐시 미스가 발생시 DB에서 누락된 데이터를 cache로 로딩한다.
- 장점
- 동일한 데이터를 반복적으로 요청할 때, 읽기가 많은 워크로드에 적합하다.
- 단점
- 데이터를 처음 요청하면 항상 캐시 누락이 발생한다.
- → 개발자가 직접 쿼리를 실행하여 첫 요청 캐시 미스를 나지 않게 하는 방법을 사용하기도 한다.
- 데이터를 처음 요청하면 항상 캐시 누락이 발생한다.
4) Write Around
- 개념
- 데이터는 데이터베이스에 직접 기록되며, 읽은 데이터만 캐시에 저장된다.
- Write-Around는 Read-Through와 결합 될 수 있으며, Cache-Aside와도 결합될 수 있다.
- 데이터가 한 번 쓰여지고, 덜 자주 읽히거나 읽지 않는 상황에서 좋은 성능을 제공한다
- 예를들어, 실시간 로그 또는 채팅방 메시지가 있음.
5) Write Back(Write Behind)
- 개념
- 애플리케이션이 cache에 먼저 데이터를 쓰고 약간의 지연 후에 DB에 쓰는 방식.
- 장점
- 쓰기가 많은 워크로드에 적합하다.
- Read-Through와 결합하여 가장 최근에 업데이트되고 엑세스 된 데이터를 항상 캐시에서 사용할 수 있는 혼합 워크로드에 적합하다.
- 데이터베이스에 대한 전체 쓰기를 줄일 수 있어, 해당 비용을 감소할 수 있다.
- 단점
- 위와 반대의 경우 적합하지 않음.
- 캐시에서 오류가 발생하면 데이터를 영구 소실 한다.
참고
'개발 > Research' 카테고리의 다른 글
[Research] MySQL Batch Insert (0) | 2022.07.12 |
---|---|
[Research] Redis 조사 (0) | 2022.07.12 |
[Research] Springfox Swagger2 -> Springdoc OpenAPI 3 (0) | 2022.07.12 |
tomcat vs. hikaricp (0) | 2022.07.12 |
배치, 스케줄러 (0) | 2022.07.12 |
Comments