백엔드 개발 · 기초
캐시 무효화(Cache Invalidation)는 왜 중요하며, 이를 관리하기 위한 기본적인 방법으로는 어떤 것들이 있을까요?
힌트 · 캐시 데이터와 원본 데이터 간의 불일치를 방지하기 위함이며, TTL 설정이나 데이터 업데이트 시 명시적 삭제 등이 있습니다.
데이터 일관성캐시 적중률TTL(Time-To-Live)Write-ThroughWrite-Back
모범답안
캐시 무효화는 캐시된 데이터와 원본 데이터 간의 불일치를 막기 위해 중요합니다. 만약 캐시된 데이터가 최신 상태를 반영하지 못하면 사용자에게 잘못된 정보를 제공하거나 시스템 오류를 발생시킬 수 있습니다.
캐시 무효화를 관리하는 기본적인 방법으로는 다음과 같은 것들이 있습니다.
- TTL(Time-To-Live) 설정: 캐시에 저장된 데이터의 유효 기간을 설정하여, 일정 시간이 지나면 자동으로 캐시에서 삭제되도록 합니다.
- Write-Through 캐시: 데이터가 업데이트될 때마다 캐시와 원본 데이터베이스를 동시에 업데이트하여 데이터 일관성을 유지합니다.
- Write-Back 캐시: 데이터 업데이트 시 캐시에만 먼저 기록하고, 나중에 원본 데이터베이스에 업데이트합니다. 이 경우, 캐시 무효화 전략이 더욱 중요해집니다.
- 명시적 삭제: 원본 데이터가 업데이트될 때, 해당 데이터와 관련된 캐시를 직접 삭제합니다. 예를 들어, 데이터베이스의 특정 레코드가 변경되면 해당 레코드를 캐시에서 제거하는 방식입니다.
이러한 방법들을 적절히 사용하여 데이터 일관성을 유지하고 캐시 적중률을 높이는 것이 중요합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 캐시 (Redis) 면접 질문
- Redis에서 제공하는 주요 데이터 구조 중 String, Hash, List의 기본적인 특징과 각각 어떤 상황에 적합한지 간략히 설명해 주세요.
- 캐시 히트(Cache Hit)와 캐시 미스(Cache Miss)는 무엇을 의미하며, 각각 발생했을 때 시스템은 어떻게 동작하는지 설명해 주세요.
- Redis에서 TTL(Time To Live)은 무엇이며, 캐시 데이터의 유효성을 관리하는 데 어떻게 사용되는지 설명해 주세요.
- 가장 기본적인 캐싱 전략 중 하나인 'Cache-Aside' 패턴에 대해 설명해 주세요. 데이터 읽기 및 쓰기 시 어떻게 동작하나요?
- 캐시 무효화 전략 중 Write-through, Write-back, Lazy loading(Write-aside) 방식의 차이점과 각각의 장단점을 설명하고, 특정 상황에 적합한 전략을 선택하는 기준에 대해 설명해 주세요.
- Redis에서 설정 가능한 다양한 eviction 정책(예: LRU, LFU, volatile-lru 등)에 대해 설명하고, 서비스 특성을 고려하여 적절한 정책을 선택하는 기준과 그 이유를 설명해 주세요.