Redis는 메모리를 활용해 자료를 저장할 수 있게 해준다.
하지만 메모리를 생각없이 사용하게 되면 OOM(Out-Of-Memory)가 발생하게 되어 레디스가 다운되어 서버의 작동에
악영향을 끼칠 수 있다.
따라서 레디스에서 지원하는 자료구조별 메모리 사용량을 대략적으로 비교해보겠다.
1. String
String 형태로 약 100만건을 저장할 때 메모리 사용량이 200MB가 나왔다.
2. Set
Set 형태로 약 100만건을 저장할 때 메모리 사용량은 100MB가 나왔다.
3. Hash
Hash 형태로 저장시 약 120MB가 사용되었다.
가장 효율이 좋은 자료구조는 서비스 마다 다르겠지만 우리가 기본적으로 알고있는 자료구조중에서는 Set로 판명되었다.
하지만 레디스에는 ziplist를 사용하여 Set, Hash를 대체할 수 있다.
https://redis.io/glossary/redis-ziplist/
Redis Ziplist - Redis
What is a ziplist? A ziplist is a specialized data structure used in Redis, an in-memory data storage system. It is designed to efficiently store a sequence of small-sized elements, such as strings, integers, or floating-point numbers. A ziplist is a compr
redis.io
인메모리 특성상 100만 이하를 탐색 할 때 선형탐색이 더 빠름을 이용한것인데 ziplist 사용시 메모리를 약 80MB 사용하였다.
ziplist가 만능은 아니겠지만 이러한 방법도 있다는걸 참고하면 좋을 것 같다.
'Infra' 카테고리의 다른 글
SSL 가속기 사용 이유 (1) | 2024.11.28 |
---|---|
Ubuntu24 한글키보드 (0) | 2024.11.03 |
Oracle 19c 버전 특징 및 버전 확인 방법 (1) | 2024.10.06 |
[WebRTC] CentOS TurnServer 설치 (2) | 2024.10.05 |
TLS 버전 차이 (0) | 2024.09.29 |