레디스(Redis) 캐시 만료/삭제 정책

Minsu Kang·2023년 2월 11일
0

레디스

목록 보기
3/5

레디스는 기본적으로 TTL 이 만료된 데이터를 아래 두가지 방법으로 삭제한다

  • 주기적으로(100ms) 만료시간이 설정된 일부 키를 임의로 선택하여 만료여부를 확인 후 삭제
    • 레디스에 저장된 모든 키를 확인할 경우 CPU 부하가 심해진다. 레디스는 이를 막기위해 일부 키만을 선택하여 확인한다.
  • 만료된 데이터에 접근시 삭제
    • 키를 가져올 때 만료시간이 설정되어 있을 경우 만료여부를 확인한다. 만료되었다면 이 시점에 키를 삭제하고 아무것도 반환하지 않는다.

레디스의 이러한 캐시만료 정책에도 불구하고 만료된 키가 메모리에 누적되어 메모리가 고갈될 수 있다. 이런 상황에서 레디스는 eviction 정책에 따라서 메모리를 확보한다.
아래 정책들을 사용할 수 있다.

  • noeviction: 메모리가 고갈된 경우 새로운 쓰기 작업을 하려고 할 때 에러를 반환한다.

  • allkeys-lru: 가장 최근에 사용되지 않은 키를 삭제한다.

  • allkeys-random: 키 공간에서 임의의 키를 삭제한다.

  • allkeys-lfu: 사용빈도가 적은 키를 삭제한다.

  • volatile-lru: 만료기간이 설정된 키 중에서 가장 최근에 사용되지 않은 키를 삭제한다.

  • volatile-random: 만료기간이 설정된 키 중에서 임의의 키를 삭제한다.

  • volatile-lfu: 만료기간이 설정된 키 중에서 사용빈도가 적은 키를 삭제한다.

  • volatile-ttl: 만료기간이 설정된 키 중에서 ttl 이 가장 짧은것을 삭제한다.

profile
백엔드 개발자

0개의 댓글