Redis를 활용한 Cache

이준엽·2023년 3월 31일
6

Backend

목록 보기
1/5

Cache 전략 예시

  1. Cache Aside (Lazy Loading):
    Cache Aside 전략에서는 데이터가 필요할 때만 캐시에 저장한다. 애플리케이션은 먼저 Redis에서 데이터를 조회하고, 찾지 못한 경우 데이터베이스에서 데이터를 가져와 캐시에 저장한 후 반환한다. 이 방법은 사용하지 않는 데이터가 캐시에 저장되지 않아 메모리를 효율적으로 사용할 수 있는 장점이 있지만, 캐시 미스가 발생할 경우 데이터베이스에 부하가 가해질 수 있다.

  1. Read-through:
    Read-through 전략에서는 캐시가 데이터베이스에서 직접 데이터를 가져온다. 캐시 미스가 발생하면, 캐시는 데이터베이스에서 데이터를 가져와 애플리케이션에 제공하고 이 데이터는 캐시에도 저장된다. 이 방법은 데이터 일관성을 유지하고 캐시 미스를 줄이는 데 도움이 됨.

  1. Write-through:
    Write-through 전략에서는 애플리케이션에서 데이터를 업데이트할 때마다 Redis 캐시도 함께 업데이트. 이 방법은 캐시와 데이터베이스 사이의 동기화를 유지하기 때문에 데이터 일관성이 높다. 그러나 쓰기 작업이 많은 애플리케이션에서는 캐시와 데이터베이스에 동시에 쓰기를 수행해야 하므로 성능에 영향을 줄 수 있음.

  1. Write-around:
    Write-around 전략에서는 애플리케이션에서 데이터를 업데이트할 때 캐시를 건너뛰고 바로 데이터베이스에 쓰기를 수행한다. 이 방법은 캐시에 아직 사용되지 않은 데이터가 저장되는 것을 방지하며, 데이터베이스 부하를 줄인다. 하지만 쓰기 후 바로 읽기가 발생하는 경우 캐시 미스가 발생할 수 있다.

  1. Write-back (Write-behind):
    Write-back 전략에서는 애플리케이션에서 데이터를 업데이트할 때 캐시에만 쓰기를 수행하고, 데이터베이스에는 나중에 일괄적으로 쓰기를 수행한다. 이 방법은 쓰기 작업의 성능을 향상시키고 데이터베이스 부하를 줄일 수 있지만, 캐시와 데이터베이스 사이의 동기화가 지연되어 데이터 일관성 문제가 발생할 수 있다. 또한, 캐시 시스템에 장애가 발생하면 아직 데이터베이스에 반영되지 않은 변경 사항이 손실될 수 있다.

  1. Time-To-Live (TTL):
    TTL 전략에서는 캐시된 데이터에 만료 시간을 설정한다. 만료 시간이 지나면 데이터는 자동으로 삭제되어 캐시의 최신성을 유지할 수 있다. 이 방법은 주로 변동성이 높은 데이터에 사용되며, 일정 시간 이상 된 데이터는 데이터베이스에서 다시 가져오도록 한다.

  1. Eviction Policies:
    Redis는 메모리가 가득 찼을 때 데이터를 삭제하는 다양한 추방 정책을 제공한다. 예를 들어, LRU (Least Recently Used) 알고리즘을 사용하여 가장 오랫동안 사용되지 않은 데이터를 삭제할 수 있다. 이 방법은 메모리 사용량을 제한하면서 최근에 사용된 데이터를 유지할 수 있다. Redis는 LRU 외에도 LFU (Least Frequently Used), volatile-ttl, random 등 다양한 추방 정책을 지원한다.
profile
하루하루 차근차근 발전하는사람이 되자 😤

0개의 댓글