본문 바로가기

Redis

Redis 메모리 퇴거 정책 LRU, LFU, Random

Redis에 대해서 공부를 하던중 Redis는 메모리가 부족하게 되면 설정한 퇴거 알고리즘에 맞게 메모리를 확보한다는것을 알게 되었다.

 

종류로는 LRU(Least Recently Used), LFU(Least Frequently Used), Random 3가지 종류가 있다.

 

각각의 3가지 종류는 또 3가지의 방법을 이용해서 메모리를 확보한다.

 

  • 메모리 제한에 도달하게 되면 데이터를 지우지 않고 OOM을 반환하는 noeviction 방식
  • 모든 데이터를 대상으로 키를 삭제하는 allkeys 방식
  • 만료된 데이터 중에서 삭제하는 volatile

 

LRU, LFU, Random은 3가지 방식을 이용해서 삭제를 한다.

 

 

그럼 LRU, LFU, Random 알고리즘이란?

 

LRU 알고리즘이란?

데이터마다 사용한 시간을 표시하며, 설정된 메모리 샘플링 만큼 랜덤으로 데이터를 선택한

다음 사용시간이 오래된 데이터를 지우는 방식이다.

 

Random 알고리즘이란?

랜덤 알고리즘은 이름 그대로 무작위로 데이터를 선택해서 삭제하는 방식이다.

 

LFU 알고리즘이란?

LFU 알고리즘은 모든 데이터에 엑세스 횟수를 각각 체크하며, 엑세스 횟수가 가장 적은 데이터를 지우는 방식이다

 

Redis로 부터 부여받은 엑세스 숫자의 범위는 0 - 255이다. 카운팅의 범위가 적다 보니 LFU 알고리즘은 일정 시간이 되면 엑세스 횟수를 줄이게 되어 있다.

또한 한번 사용했다고 해서 엑세스 횟수를 1씩 증가 시키는 것이 아니라 lfu-log-factor로 설정한 값과 비례해 엑세스 횟수를 증가시킨다.

 

Redis 메모리 퇴거 과정은?

그럼 redis는 어떤 방식으로 메모리를 퇴거하게될까?

 

퇴거에 플로우에 대해서 간단하게 도식화 시켜보았다.

 

 

 

'Redis' 카테고리의 다른 글

Redis - pub sub 이란?  (0) 2020.11.21
Redis - LFU 알고리즘이란?  (0) 2019.06.21
redis-stat 설치방법  (1) 2019.06.11
Redis - 메모리 정책 , 메모리 크기 설정 방법  (0) 2019.06.05