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 이 되겠네?