🗒️ Cache 읽기 전략
1. Look Aside 패턴
- 데이터를 조회할 때, 우선 캐시에 저장된 데이터가 있는지 우선적으로 확인하는 전략
- 만일 캐시에 데이터가 없으면 DB에서 조회
- 반복적인 읽기가 많은 호출에 적합
- 캐시와 DB가 분리되어 가용되기 때문에 캐시 장애 대비 구성이 되어 있음 → 만일 redis가 다운 되더라도, DB에서 데이터를 가져올 수 있어 서비스 자체에는 문제 X → 단, 캐시에 붙어 있던 connection이 많았다면, redis가 다운된 순간, 순간적으로 DB에 몰려서 부하 발생
2. Read Through 패턴
- 캐시에서만 읽어오는 전략 (inline cache)
- 데이터 조회를 전적으로 캐시에만 의지하므로, redis가 다운될 경우 서비스 이용에 차질이 생길 수 있음
📝 Cache쓰기 전략
1. Write Back 패턴 (Write Behind)
- 데이터를 저장할 때 DB에 바로 쿼리하지 않고, 캐시에 모아서 일정 주기 배치 작업을 통해 DB 반영
- 캐시에 모아두었다가 DB에 쓰기 때문에 쓰기 쿼리 회수 비용과 부하를 줄일 수 있음
- 데이터 정합성 확보 가능
- Write가 빈번하면서 Read를 하는데 많은 양의 Resource가 소모되는 서비스에 적합
- 캐시에서 오류가 발생하면 데이터를 소실할 가능성 있음
2. Write Through 패턴
- 데이터를 DB와 캐시에 동시에 저장하는 전략으로, DB와 캐시는 항상 동기화 되어 있어, 캐시의 데이터는 항상 최신 상태로 유지
- 데이터의 일관성을 유지
- 데이터 유실이 발생하면 안 되는 상황에 적합
- 매 요청마다 두 번의 Write가 발생하게 됨으로써, 서비스에서 성능 이슈 발생할 가능성 높음
3. Write Around 패턴
- 모든 데이터는 DB에 저장하고, 캐시는 갱신하지 않음
- 캐시 miss가 발생하는 경우에만 DB와 캐시에도 데이터를 저장
- 따라서 캐시와 DB 내의 데이터가 다를 수 있음 (데이터 불일치)
Reference
https://inpa.tistory.com/entry/REDIS-%F0%9F%93%9A-%EC%BA%90%EC%8B%9CCache-%EC%84%A4%EA%B3%84-%EC%A0%84%EB%9E%B5-%EC%A7%80%EC%B9%A8-%EC%B4%9D%EC%A0%95%EB%A6%AC