본문 바로가기
Come on IT/DataBase

Redis 메모리 설정 및 정리 (feat. maxmemory 및 최적화)

by JONGSKY 2024. 7. 16.
728x90
SMALL

1. 글을 작성하게 된 계기

 

redis를 kafka와 같이 실서버에서 이용해보려고 한다.

이전에 redis를 메시지큐로 이용해 본 경험은 있는데,

메모리 데이터베이스로 사용하는 것은 처음이기 때문에

당연하게 알아두어야 할 메모리에 대한 내용을 정리하고자 한다.

 

2. Redis 메모리 관리의 주요 개념

 

1. 메모리 사용량

 

- Redis는 데이터 메모리에 저장하므로 매우 빠른 읽기 및 쓰기 속도를 제공함.

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

 

2. 메모리 제한

 

- `maxmemory` 설정을 통해 Redis가 사용할 수 있는 메모리의 최대 양을 제한할 수 있음

- 해당 설정을 통해 메모리 부족으로 인한 시스템 장애 방지 가능

( maxmemory를 설정하지 않으면 시스템이 제공하는 모든 메모리 사용 가능 즉, Out of Memory(OOM) 오류 발생가능)

 

3. 메모리 정책

 

- `memory-policy` 설정을 사용하여 메모리 사용 한도에 도달했을 때의 동작을 정의할 수 있음

- Redis가 메모리를 효율적으로 관리할 수 있음

 

3. Maxmemory 설정

 

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

 

maxmemory 256mb

 

4. Maxmemory 정책 (`maxmemory-policy`)

 

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

 

1. noeviction

 

- 새로운 쓰기 요청이 실패하도록 함, 데이터를 삭제하지 않고 메모리를 유지함.

 

maxmemory-policy noeviction

 

2. allkeys-lru

 

- 모든 키 중에서 가장 오래 사용되지 않은 키를 삭제함. (Least Recently Used)

 

maxmemory-policy allkeys-lru

 

3. volatile-lru

 

- 만료 시간(TTL)이 설정된 키 중에서 가장 오래 사용하지 않은 키를 삭제함.

 

maxmemory-policy volatile-lru

 

4. allkeys-random

 

- 모든 키 중에서 무작위로 키를 삭제함.

 

maxmemory-policy allkeys-random

 

5. volatile-random

 

- 만료 시간이 설정된 키 중에서 무작위로 키를 삭제함.

 

maxmemory-policy volatile-random

 

6. 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. AOF(Append-Only File) 설정

 

- 데이터 영구성 보장을 위해 쓰기 작업을 로그 파일에 기록

 

appendonly yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

 

3. RDB 스냅샷 설정

 

- 특정 간격으로 데이터베이스 스냅샷을 디스크에 저장

 

save 900 1
save 300 10
save 60 10000

 

4. lazyfree 설정

 

- `lazyfree` 설정을 사용해 키가 삭제될 때 동기식으로 삭제하지 않고 비동기식으로 삭제해 성능 향상 가능

 

lazyfree-lazy-eviction yes
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes
728x90
LIST