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
'Come on IT > DataBase' 카테고리의 다른 글
MySQL 저장경로 변경하기(feat. ubuntu) (0) | 2024.02.02 |
---|---|
MySQL 외부접속 권한 설정 (0) | 2024.02.02 |
ubuntu mysql 설치 및 초기 세팅 (0) | 2024.02.02 |
django-mysql 연결 시 django.db.utils.OperationalError 오류해결 (0) | 2024.01.22 |
mysql '/var/lib/mysql/': Operation not permitted 에러 해결 (0) | 2024.01.21 |