인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

박상훈님의 프로필 이미지

작성한 질문수

실전! Redis 활용

Thundering Herd Problem

Stale Cahe Invalidation 방법에 대한 질문 요청 드립니다

해결된 질문

작성

·

68

0

강사님 안녕하세요. 해당 강의 부분 듣고 궁금한 점이 하나 생겨서 질문 요청 드립니다.

제가 특정 rdb의 데이터를 레디스에 캐싱 후 데이터 조회마다 사용하고 데이터의 변경이 있을 경우에 레디스에 반영해주는 방법을 사용하곤 했는데, 개발자가 인지 못한 db 데이터의 수정이나 오염이 있을 경우 강의에서 말씀해주신 것 처럼 정합성이 깨지고 문제가 발생할 것 같은데 이에 대한 방법으로 어떻게 처리하시는 걸 선호하시나요? 주기적인 배치를 통한 데이터 정합성 검사? db에서 데이터의 변경이 있었는지 version 같은 컬럼을 두고 확인?

해당 문제에 대한 처리 방법이 좋을지 강사님의 의견이 궁금합니다!

답변 2

1

신동현님의 프로필 이미지
신동현
지식공유자

안녕하세요, 시스템 내에 캐시 정합도가 얼만큼 중요한지에 따라서 다양한 해결 방법이 있을 것 같은데요.

해당 문제에 대해서 개인적으로는 짧은 만료 시간(TTL)을 두어 eventually consistency가 지켜지도록 캐시를 관리하는 것이 좋다고 생각합니다.

만약 다른 프로세스(배치 등)를 추가해서 캐시의 정합성을 맞추고 이를 관리해야 한다면, 캐시가 필요 이상으로 쓰이고 있거나 전반적인 캐시 관리 자체가 잘못되고 있다고 생각해야 할 것 같습니다.

참고로 말씀 주신 방법 모두 활용 가능한 방법은 맞습니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 박상훈님.

캐시와 데이터베이스의 정합성을 유지하는 문제는 많은 개발자들이 직면하는 일반적인 문제입니다. 말씀하신 내용과 관련하여 유용한 답변을 찾았습니다. 캐싱 시스템에서 데이터베이스의 값을 업데이트할 때 발생할 수 있는 정합성 문제와 이를 처리하는 방법에 대한 정보는 아래의 링크에서 확인하실 수 있습니다:

  • Stale cache invalidation 예시에서는 캐시와 데이터베이스의 정합성 문제를 예방하고 해결하는 방법에 대한 신동현 지식공유자의 설명이 포함되어 있습니다. 계좌 잔고와 같은 데이터가 변경되었을 때 캐시를 적절하게 무효화하는 방법에 대한 예시가 제공되고 있습니다.

이와 더불어, 주기적인 배치를 통한 정합성 검사나 데이터베이스의 변경 여부를 파악하기 위한 버전 컬럼 사용도 좋은 접근 방법 중 하나입니다. 이는 시스템의 특성과 요구사항에 따라 선택될 수 있습니다. 어떤 접근 방법을 선택하시더라도, 데이터 변경 시 즉각적으로 캐시에 반영하거나, 캐시를 무효화하는 메커니즘을 설정하여 정합성을 유지하는 것이 중요합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.