올바르게 수행되면 캐시는 응답 시간을 줄이고 데이터베이스의 부하를 줄이며 비용 절감에 효과적이다.
캐시를 활용하는 몇 가지 전략이 있으며 올바른 것을 선택하면 좋은 효과를 볼 수 있다.
캐싱 전략은 데이터를 어떻게 읽고 쓸 것인가에 따라 달라진다.
캐싱 활용 전략에 대해서 학습해 보자!😁
출처 https://velog.io/@hwaya2828/Redis-캐시-전략
출처 https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/
- Cache에서 데이터가 있는지 체크한다.
- Cache에 Data가 있으면 Cache hit! -> Data를 Application에 return 한다.
Cache에서 Data를 못 찾는 경우 Cache miss -> Application은 DB에 쿼리를 날려서 데이터를 읽고 Application에 Data를 반환한 뒤 Cache에 Data를 저장한다.
🚀 특징
🔥 초기에 데이터가 DB에만 저장되어 있어 처음에 cache miss가 많아지기 때문에 성능 저하의 가능성이 있다.
미리 DB에서 캐시로 데이터를 넣어주는 작업이 필요하고 이를 Cache Warming이라고 한다.
출처 : https://velog.io/@hwaya2828/Redis-캐시-전략
출처 : https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/
캐시는 데이터베이스와 인라인으로 배치되며 Cache Miss가 있는 경우 DB에서 Miss된 데이터를 로드하고 Cache를 채우고 Application으로 반환.
Cache-aside, Read-through 전략은 처음 Read 하는 경우에만 data load를 lazy 하게 진행함.
🚀 특징
참조 https://velog.io/@hwaya2828/Redis-캐시-전략
참조 https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/
log를 DB에 넣어야 하는 경우에 cache에 몰아 넣어 놓고 한번에 배치 작업으로 DB에 저장하는 로직과 같이 Cache에 데이터를 몰아두고 DB에 한번에 배치작업으로 write 한다.
🚀 특징
*TTL 이란?
타임 투 리브(Time to live, TTL)는 컴퓨터나 네트워크에서 데이터의 유효 기간을 나타내기 위한 방법이다.
TTL은 계수기나 타임스탬프의 형태로 데이터에 포함되며, 정해진 유효기간이 지나면 데이터는 폐기된다.
컴퓨터 네트워크에서 TTL은 패킷의 무한 순환을 방지하는 역할을 한다.
컴퓨터 애플리케이션에서 TTL은 캐시의 성능이나 프라이버시 수준을 향상시키는 데에 사용되기도 한다
일부 개발자들은
cache-aside 와 write-back에서 Peak 둘 다 로드 기간 동안 트래픽 spike를 잘 처리하기 위해 Redis를 활용하기도 한다.
대부분 RDBMS에서 스토리지 엔진(InnoDB)은 기본적으로 내부에서 후기입 캐시를 활성화 → 쿼리는 먼저 메모리에 기록되거 결국에는 디스크로 플러시 된다.
출처 : https://velog.io/@hwaya2828/Redis-캐시-전략
출처 : https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/
Application 이 Data를 쓰거나 값을 update 하려고 할 때
1. 응용프로그램은 Data를 Cache에 직접 쓴다.
2. Cache는 DB에 Data를 update 한다.
3. 쓰기가 완료되면 Cache와 Database 모두 동일한 값을 가지며 Cache는 항상 일관성을 유지한다.
🚀 특징
IoT 또는 ad Tech Space의 일부 워크 로드에는 한 번 쓰고 절대 읽지 않는 상당한 양의 데이터가 있고 이런 시나리오에서는 write - through 전략을 사용하는 것이 의미 없는 경우가 많음.
Cache가 읽지 않은 데이터로 채워지면 일반적으로 사용률과 Cache/Catch, miss 비율이 낮아 효용이 감소한다.
쓰기가 DB로 직접 이동하는 쓰기 패턴을 사용할 수 있다.
따라서 읽은 데이터만 캐시 된다.
🚀 특징
• ex) 실시간 로그 또는 채팅방 메시지로 사용될 수 있다
상황에 맞는 캐시 활용 전략을 사용하자!👨🏻💻
https://velog.io/@hwaya2828/Redis-캐시-전략
https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/