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가 어떤 데이터를 삭제할지 결정하는 정책
noeviction
- 새로운 쓰기 요청이 실패하도록 함, 데이터를 삭제하지 않고 메모리를 유지함.
maxmemory-policy noeviction
- allkeys-lru
- 모든 키 중에서 가장 오래 사용되지 않은 키를 삭제함. (Least Recently Used)
maxmemory-policy allkeys-lru
volatile-lru
- 만료 시간(TTL)이 설정된 키 중에서 가장 오래 사용하지 않은 키를 삭제함.
maxmemory-policy volatile-lru
allkeys-random
- 모든 키 중에서 무작위로 키를 삭제함.
maxmemory-policy allkeys-random
volatile-random
- 만료 시간이 설정된 키 중에서 무작위로 키를 삭제함.
maxmemory-policy volatile-random
volatile-ttl
- 만료 시간이 가장 가까운 키를 우선적으로 삭제함.
maxmemory-policy volatile-ttl
5. 메모리 최적화 관련 추가 설정
메모리 해시(ziplist) 압축
- 작은 해시와 리스트의 메모리 사용량을 줄이기 위해 압축을 사용함
hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64
- 작은 해시와 리스트의 메모리 사용량을 줄이기 위해 압축을 사용함
메모리 사용량 모니터링
- INFO 명령어를 통해 현재 메모리 사용량 확인 가능
INFO memory - 주요 모니터링 지표:
- used_memory: 실제 사용 중인 메모리
- used_memory_rss: 운영체제가 할당한 물리적 메모리
- mem_fragmentation_ratio: 메모리 단편화 비율
- INFO 명령어를 통해 현재 메모리 사용량 확인 가능
6. 메모리 관리 모범 사례
적절한 데이터 구조 선택
- String 대신 Hash 사용 고려
- 큰 컬렉션을 여러 작은 컬렉션으로 분할
TTL(Time To Live) 활용
- 임시 데이터에 대해 적절한 만료 시간 설정
- EXPIRE 명령어 사용
주기적인 모니터링
- 메모리 사용량 추이 관찰
- 메모리 단편화 모니터링
- 필요시 Redis 인스턴스 재시작 고려
7. 메모리 분석 도구
MEMORY DOCTOR
- Redis 메모리 상태 진단
MEMORY DOCTOR
- Redis 메모리 상태 진단
MEMORY USAGE
- 특정 키의 메모리 사용량 확인
MEMORY USAGE <key>
- 특정 키의 메모리 사용량 확인
MEMORY STATS
- 자세한 메모리 통계 확인
MEMORY STATS
- 자세한 메모리 통계 확인
'Redis' 카테고리의 다른 글
| Redis Cluster (0) | 2025.03.02 |
|---|---|
| Redis Cache (0) | 2025.03.02 |