빨간색코딩

Redis maxmemory (policy, samples, replica-ignore) 본문

database

Redis maxmemory (policy, samples, replica-ignore)

빨간색소년 2022. 4. 24. 03:08

redis 기본 개념 포스팅 : https://sjh836.tistory.com/178

maxmemory

  • https://redis.io/docs/manual/config/
  • redis.conf 에서 초기설정 가능
    • 런타임에는 CONFIG SET 으로 가능
  • 32bit : 3GB
  • 64bit : 0 = 상한선없음
    • RAM을 모두 사용하면, 디스크 swap 까지 사용
    • swap 사용부터는 상당한 성능저하
  • redis cluster 에서도 동작은 한다.
  • 다만, 한 장비에 N개의 노드를 뛰울 경우, maxmemory 를 잘 생각해야한다.
    • A 장비에 master 노드, slave 노드를 뛰울거면, ÷2 를 해야..
  • RDB 에 스냅샷을 남기는 경우, BGSAVE 를 수행하는 스레드가 메모리를 사용할 수도 있으므로, 고려해야한다.

maxmemory-policy

  • https://redis.io/docs/manual/eviction/
  • noeviction : 기존 데이터 삭제X. maxmemory 시, OOM 발생하며, 새 데이터 저장X
  • allkeys-lru : LRU 로 삭제해서 공간확보 후 저장
    • LRU : 가장 오래 사용하지 않은 것
  • allkeys-lfu : LFU 로 삭제해서 공간확보 후 저장
    • LFU : 가장 적게 사용한 것
    • redis 4.0 부터 지원
  • volatile-lru : ttl 이 설정되서 expire 대상 중에 LRU 로 삭제해서 공간확보 후 저장
    • volatile 류는 대상이 없으면 noeviction 로 동작한다.
  • volatile-lfu : ttl 이 설정되서 expire 대상 중에 LFU 로 삭제해서 공간확보 후 저장
    • redis 4.0 부터 지원
  • volatile-ttl : ttl 이 설정되서 expire 대상 중에 ttl 이 짧은 것부터 삭제해서 공간확보 후 저장
  • allkeys-random : 랜덤삭제해서 공간확보 후 저장
  • volatile-random : ttl 이 설정되서 expire 대상 중에 랜덤삭제해서 공간확보 후 저장

maxmemory-samples

  • lru 의 정밀도라고 볼 수 있다.
  • 정밀할 수록 더 많은 비용이 들어가기 때문에, 적당한 값을 권장한다.
  • 5가 기본. 10은 정밀. 3은 빠르지만 상대적 비정밀

replica-ignore-maxmemory

  • https://redis.io/docs/manual/replication/
  • redis 5.0 부터, 복제 노드들은 maxmemory 설정을 기본적으로 무시한다.
    • slave 라는걸 인지하고 무시하는건 아니고, write 가 master에서 처리되고 slave로 전달되니, 구조적으로 그렇다는 것이다.
  • master와 slave 노드가 서로 다른 maxmemory 값을 갖고 있으면 문제가 될 여지가 있다.
  • 따라서, replica-ignore-maxmemory yes 를 통해 예방이 가능하다.
Comments