DBMS/Redis

[Redis] Cache Aside, Write Around 전략의 한계점 / 해결 방법

멋쟁휘개발자 2024. 11. 3. 17:25

Cache Aside, Write Around 전략의 한계점 / 해결 방법

 

| 캐시된 데이터와 DB에 저장된 데이터의 불일치

 

Cache Asdie와 Write Around 전략을 같이 썼을 때의 한계점 중 하나는 캐시된 데이터와 DB 데이터가 일치하지 않을 수 있다는 점이다

즉, 데이터의 일관성 보장 할 수 없다

 

예를들어 블로그명을 `A` -> `B`로 변경했으나, 여전히 A인 경우이다.

생각해보면 데이터베이스에는 B로 변경됐지만, 조회는 캐시에 저장해 두어 여전히 A로 노출되는 상황(= 데이터 불일치)

 

 

💡 그렇다면, DB와 레디스에 모두 업데이트하면 될까?

 

아니다.

캐시는 메모리(RAM)에 저장되기 때문에 디스크보다 용량이 작다.

 

 

| 해결방법

1. 캐시를 적용시키기에 적절한 데이터를 정한다.

  • 자주 조회되는 데이터
  • 잘 변하지 않는 데이터
  • 실시간으로 정확하게 일치하지 않아도 되는 데이터

2. `TTL 기능(만료 시간 설정 기능)`을 활용한다.

  • 적절한 주기로 데이터를 삭제하여 캐시의 공간 확보
  • cache miss를 발생되면, DB의 데이터를 새로 조회해와서 캐시에 데이터를 넣게하여 데이터 동기화

 

 

근데,  멀티 스레드에서 cache miss 발생 한다면?? 

 

최초 한 건에 대해 cache miss 가 일어나서 캐시에 데이터를 저장했을거고,

이후부터는 cache hit 이 되겠네?