레디스를 캐시로 쓸 때 어떤 방식으로 사용할 지 전략이 다양하다. 처음에는 그 중에서 딱 2가지의 전략만 배워도 충분하다. 이 전략이 현업에서 가장 많이 사용되고 있는 전략이다. 나머지의 전략들은 이 2가지 전략이 익숙해진 뒤에 차근차근 추가로 학습하면 된다. (파레토의 법칙)
✅ Cache Aside (= Look Aside, Lazy Loading) 전략
데이터를 조회할 때 주로 사용하는 전략이 Cache Aside 전략이다. Look Aside 전략 또는 Lazy Loading 전략이라고 부른다. 이 전략은 어떤 식으로 작동하는 지 하나씩 알아보자.
처음으로 게시판 서비스를 배포했다고 가정하고 Cache Aside 작동 방식을 이해해보자.
처음 게시판 서비스를 배포했기 때문에 데이터베이스와 레디스에는 아무런 데이터도 저장이 안 되어 있다.
일부 사용자가 들어와 게시글 작성을 함으로써 데이터를 저장한다. 이 데이터는 데이터베이스에 저장된다. (레디스에는 저장되지 않는다.)
사용자가 데이터를 조회하려고 요청한다. 이 때, 데이터베이스로부터 바로 데이터 조회를 하기 전에 레디스에 있는 지 먼저 확인한다.
레디스에 데이터가 없는 걸 확인한 뒤에 데이터베이스로부터 데이터를 조회해서 응답한다.
데이터베이스로부터 조회한 데이터를 응답한 뒤에 레디스에도 데이터를 저장해둔다.
다시 한 번 사용자가 데이터를 조회하려고 요청한다.
레디스에 조회하고자 하는 데이터가 있는 지 확인했더니, 데이터가 존재해서 레디스로부터 데이터를 바로 가져와버린다.
이게 Cache Aside 전략을 적용시킨 형태이다. 실제 예시에서 흐름을 봤으니 기억하기 좋게 다시 한 번 정리해보자.
캐시에 데이터가 있을 경우 (= Cache Hit)
데이터를 요청했을 때 캐시에 데이터가 있는 경우를 보고 Cache Hit이라고 한다.
캐시에 데이터가 없을 경우 (= Cache Miss)
데이터를 요청했을 때 캐시에 데이터가 없는 경우를 보고 Cache Miss라고 한다.
이번에는 한 문장으로 요약해보자.
Cache Aside 전략은 캐시(Cache)에서 데이터를 확인하고, 없다면 DB를 통해 조회해오는 방식이다.
(전략 이름을 외우는 게 중요한 게 아니다. 과정을 기억하는 게 중요하다.)
✅ Write Around 전략
Cache Aside 전략이 데이터를 어떻게 조회할 지에 대한 전략이었다면, Write Around 전략은 데이터를 어떻게 쓸 지(저장, 수정, 삭제)에 대한 전략이다. Write Around 전략은 Cache Aside 전략과 같이 자주 활용되는 전략이다. Write Around 전략이 어떤 방식인지 ‘저장’의 예시로 알아보자.
Write Around 전략은 생각보다 너무 간단하다. 데이터를 저장할 때는 레디스에 저장하지 않고 데이터베이스에만 저장하는 방식이다. 그러다 데이터를 조회할 때 레디스에 데이터가 없으면 데이터베이스로부터 데이터를 조회해와서 레디스에 저장시켜주는 방식이다.
한 문장으로 요약해보자.
Write Around 전략은 쓰기 작업(저장, 수정, 삭제)을 캐시에는 반영하지 않고, DB에만 반영하는 방식을 뜻한다.