Redis와 Cache

강세준·2023년 1월 25일
0

nhn

목록 보기
7/7

캐시(Cache)

데이터값을 미리 복사해놓는 임시 저장소로 나중에 요청올 결과를 미리 저장해두었다가 빠르게 서비스 해주기 위해 사용한다.

캐싱 구조

데이터를 읽는 작업이 많을때 주로 사용하는 방식

Look aside cache(Lazy Loading)

가장 일반적인 캐싱구조

동작 순서
  1. application은 Cache(Redis)에 데이터가 있는지 확인한다.
  2. Cache에 데이터가 있으면 Cache Hit로 데이터를 가져온다.
  3. Cache에 데이터가 Cache Miss를 발생시키고 DB에서 데이터를 읽어온다
  4. DB에서 읽어온 데이터를 Cache에 저장한다.
Cache Warming

많은 Connection으로 인해 Cache서버가 다운되어 DB에 많은 부하가 가해질 때
새로운 캐시 서버를 도입하거나 데이터베이스에 새로운 데이터가 많을 경우 Cache Miss가 빈번하게 발생하여 성능이 저하되는 것을 방지하고자 미리 DB의 데이터를 캐시에 밀어 넣어주는 방법

데이터를 쓰는 작업이 많을때 주로 사용하는 방식

Write around

  • DB에만 데이터를 저장하는 방식
  • 모든 데이터는 DB에 저장되지만 cache miss가 발생할 경우 cache에 데이터를 끌어오게 된다.
  • Cache 데이터와 DB 데이터간 불일치가 발생할 수 있다.

Write through

  • DB에 데이터를 저장할때 Cache에도 함께 저장하는 방식
  • 저장할 때 마다 cache에 저장하고 DB에 써야하는 2단계를 거치기 때문에 속도가 느리다.
  • 저장하는 데이터가 재사용 되지 않을 수 있는데 Cache에 저장하게 되어 리소스 낭비가 될 수 있다.

Write back

  • Write through를 개선한 방식
  • Cache에 데이터를 저장했다가 특정 시점에 DB에 데이터를 쓰는 방식
  • 속도는 더 빠르지만 바로 DB에 데이터를 쓰지 않기 때문에 데이터 불일치가 발생하거나 Cache서버가 죽게되면 데이터를 소실할 수 있다.

https://luran.me/357
https://www.youtube.com/watch?v=92NizoBL4uA
https://meetup.nhncloud.com/posts/225
https://www.youtube.com/watch?v=mPB2CZiAkKM

profile
데이터를 탐구하는 개발자

0개의 댓글