Database/Redis

메모리 정책 in redis

최-코드 2024. 11. 5. 15:19

레디스에는 새로운 값이 추가될 때, 설정한 메모리 정책에 의해 자동으로 데이터를 지워주는 기능이 있다.

 

먼저 이를 위해서는 redis에서 사용할 메모리 양을 정해줘야 한다. 아래와 같이 redis-cli에서 명령어를 입력하면 된다.

config set maxmemory <용량>

 

이제 메모리 정책을 설정하면 된다. 아래와 같은 명령어를 사용하면 된다.

config set maxmemory-policy <정책>

 

메모리 정책 종류

  • noeviction : 캐시를 지우지 않는 정책. maxmemory 이상을 사용하면 에러를 발생시킨다.
  • allkeys-lru : lru 알고리즘을 기반으로 키를 삭제한다. 즉, 가장 오랫동안 사용하지 않은 데이터를 삭제한다.
  • allkeys-random : 랜덤하게 키를 삭제한다.
  • allkeys-lfu : 가장 적게 사용된 데이터를 삭제한다.
  • volatile-lru : 만료 시간이 있는 키만을 lru 알고리즘을 기반으로 삭제한다.
  • volatile-random : 만료 시간이 있는 키만을 랜덤으로 삭제한다.
  • volatile-ttl : 만료 시간이 짧은 순으로 삭제한다.
  • volatile-lfu : 만료 시간이 있는 키중 가장 적게 사용된 키부터 삭제한다.

메모리 삭제 프로세스

  1. 레디스에 데이터를 추가하는 명령어 실행.
  2. 레디스 서버는 남은 용량 확인, maxmemory를 넘을 경우 설정한 메모리 정책에 따라 키 삭제.
  3. 잠시 중단되었던 명령어 다시 실행.

LRU 알고리즘

  • LRU 알고리즘에서 사용될 샘플링 수를 조절할 수 있다. 명령어는 아래와 같다
config set maxmemory-samples <num>
  • 보통 10의 값을 주면 가장 실제 LRU 기능과 유사해진다고 한다.