[Redis] 5. Redis Caching 전략

최진민·2021년 11월 30일
1

Redis

목록 보기
5/6
post-thumbnail
  • Lazy Loading
  • Write-Through
  • TTL
  • Cache를 이용하면 RDB에서 보다 빠른 readwrite를 경험할 수 있다.
  • Redis를 이용한 Caching 전략에 대해 포스팅해보자.



1. 지연 로딩 (Lazy Loading)


  • 클라이언트에게 데이터 요청이 들어올 때, Cache에 로딩한다.

  • DB나 API에 접근하기 전, Cache에 접근하여 원하는 데이터가 존재할 경우 Cache 데이터를 활용한다.

  • 없으면, DB나 API에 접근하여 데이터를 가져와 Cache에 올린다.


1.1 장점

  • 요청받은 데이터만 Cache에 저장 (=> 파르토 법칙에 따라 엄청난 효율성을 불러온다.)
  • Cache Miss에 치명적이지 않다.
    • Why? > 캐시에 존재하지 않는 데이터를 DB에서 가져오며, 후에 캐시에 저장하기 때문.

1.2 단점

  • Cache에 존재하지 않는 데이터를 읽으려 할 때, 3개의 패널티가 쥐어진다.

    1. 캐시에 확인 요청
    2. 데이터베이스 확인 요청
    3. 데이터베이스에서 가져온 데이터를 캐시에 저장
    • 결론 : 캐시 미스가 많아질수록 딜레이가 심해진다.

캐시 미스 발생시, 캐시에 데이터를 쓴다. 이는, 캐시의 데이터가 최신의 상태를 유지 못할 수도 있음을 의미한다.



2. Write-Through


  • 데이터를 추가하거나 수정할 때, Cache와 DB 모두 동시에 업데이트 된다.

  • 읽을 때는 아래와 같이 수행된다.


2.1 장점

  • 항상 최신의 데이터를 갖는 캐시.

2.2 단점

  • 값을 쓰거나 업데이트할 때, 항상 두 번의 패널티를 갖는다. => 딜레이 유발
  • 새로운 노드가 추가될 경우 데이터를 찾지 못할 수도 있다. 새로운 노드에 해당 데이터가 없기 때문.
  • 대부분의 데이터가 읽히지 않으므로 리소스가 낭비될 수 있다.



3. TTL


  • Lazy Loading
    • 장점 : 캐싱 미스에 대해 치명적이지 않다.
    • 단점 : 최신 데이터가 아닐 가능성이 있다.
  • Write-Through
    • 장점 : 항상 최신의 데이터
    • 단점
      • 캐싱 미스는 치명적인 오류가 발생할 수 있다.
      • 불필요한 메모리 사용으로 인해 리소스 낭비 발생 가능
  • 각 전략에 TTL (Time To Live)를 추가하면 이득을 취할 수 있다.
    • TTL : key가 만료 시간을 가져, 해당 시간이 되면 자동적으로 삭제된다.
    • Lazy Loading => 자연스럽게 값이 삭제되어 캐시 미스가 발생하고 최신의 값을 유지할 수 있다.
    • Write-Through => 업데이트가 되지 않은 데이터를 자동 삭제하여 메모리 이득을 볼 수 있다.

참고 : 사라바라는 차곡차곡 님의 블로그

profile
열심히 해보자9999

0개의 댓글