Redis

Redis 메모리 관리

gudaeng 2025. 3. 2. 22:27

Redis는 메모리 사용량이 많아질수록 시스템 성능에 영향을 미칠 수 있음.

1. 메모리 제한

  • maxmemory 설정을 통해 Redis가 사용할 수 있는 메모리의 최대 양을 제한할 수 있음
  • 해당 설정을 통해 메모리 부족으로 인한 시스템 장애 방지 가능
    (maxmemory를 설정하지 않으면 시스템이 제공하는 모든 메모리 사용 가능 즉, Out of Memory(OOM) 오류 발생가능)

2. 메모리 정책

  • memory-policy 설정을 사용하여 메모리 사용 한도에 도달했을 때의 동작을 정의할 수 있음
  • Redis가 메모리를 효율적으로 관리할 수 있음

3. Maxmemory 설정

  • redis.conf 파일에서 설정 또는 Redis 서버 실행 시 명령줄 인수로 설정 가능
    maxmemory 256mb

4. Maxmemory 정책 (maxmemory-policy)

메모리 사용량이 maxmemory 한도에 도달했을 때, Redis가 어떤 데이터를 삭제할지 결정하는 정책

  1. noeviction

    • 새로운 쓰기 요청이 실패하도록 함, 데이터를 삭제하지 않고 메모리를 유지함.
    • maxmemory-policy noeviction
    1. allkeys-lru
      • 모든 키 중에서 가장 오래 사용되지 않은 키를 삭제함. (Least Recently Used)
      • maxmemory-policy allkeys-lru
  2. volatile-lru

    • 만료 시간(TTL)이 설정된 키 중에서 가장 오래 사용하지 않은 키를 삭제함.
    • maxmemory-policy volatile-lru
    1. allkeys-random

      • 모든 키 중에서 무작위로 키를 삭제함.
      • maxmemory-policy allkeys-random
    2. volatile-random

      • 만료 시간이 설정된 키 중에서 무작위로 키를 삭제함.
      • maxmemory-policy volatile-random
    3. volatile-ttl

      • 만료 시간이 가장 가까운 키를 우선적으로 삭제함.
      • maxmemory-policy volatile-ttl

5. 메모리 최적화 관련 추가 설정

  1. 메모리 해시(ziplist) 압축

    • 작은 해시와 리스트의 메모리 사용량을 줄이기 위해 압축을 사용함
      hash-max-ziplist-entries 512
      hash-max-ziplist-value 64
      list-max-ziplist-entries 512
      list-max-ziplist-value 64
  2. 메모리 사용량 모니터링

    • INFO 명령어를 통해 현재 메모리 사용량 확인 가능
      INFO memory
    • 주요 모니터링 지표:
      • used_memory: 실제 사용 중인 메모리
      • used_memory_rss: 운영체제가 할당한 물리적 메모리
      • mem_fragmentation_ratio: 메모리 단편화 비율

6. 메모리 관리 모범 사례

  1. 적절한 데이터 구조 선택

    • String 대신 Hash 사용 고려
    • 큰 컬렉션을 여러 작은 컬렉션으로 분할
  2. TTL(Time To Live) 활용

    • 임시 데이터에 대해 적절한 만료 시간 설정
    • EXPIRE 명령어 사용
  3. 주기적인 모니터링

    • 메모리 사용량 추이 관찰
    • 메모리 단편화 모니터링
    • 필요시 Redis 인스턴스 재시작 고려

7. 메모리 분석 도구

  1. MEMORY DOCTOR

    • Redis 메모리 상태 진단
      MEMORY DOCTOR
  2. MEMORY USAGE

    • 특정 키의 메모리 사용량 확인
      MEMORY USAGE <key>
  3. MEMORY STATS

    • 자세한 메모리 통계 확인
      MEMORY STATS

'Redis' 카테고리의 다른 글

Redis Cluster  (0) 2025.03.02
Redis Cache  (0) 2025.03.02