레디스에는 새로운 값이 추가될 때, 설정한 메모리 정책에 의해 자동으로 데이터를 지워주는 기능이 있다.
먼저 이를 위해서는 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 : 만료 시간이 있는 키중 가장 적게 사용된 키부터 삭제한다.
메모리 삭제 프로세스
- 레디스에 데이터를 추가하는 명령어 실행.
- 레디스 서버는 남은 용량 확인, maxmemory를 넘을 경우 설정한 메모리 정책에 따라 키 삭제.
- 잠시 중단되었던 명령어 다시 실행.
LRU 알고리즘
- LRU 알고리즘에서 사용될 샘플링 수를 조절할 수 있다. 명령어는 아래와 같다
config set maxmemory-samples <num>
- 보통 10의 값을 주면 가장 실제 LRU 기능과 유사해진다고 한다.
'Database > Redis' 카테고리의 다른 글
RediSearch로 데이터 쿼리하기 (0) | 2024.11.08 |
---|---|
RedisStack (0) | 2024.11.06 |
Lua Script in redis (0) | 2024.11.05 |
Lock으로 동시성 관리하기 (with. redis) (0) | 2024.10.17 |
List 타입 명령어 (0) | 2024.10.09 |