In-memory DB 비교
사이드 프로젝트 진행 도중 MSA로의 확장성 등을 고려하여 Session storage로 In-memory DB를 고려하게 되었다.
(이점: https://jaehoney.tistory.com/165?category=970233)
휴대 전화 인증 등도 메인 DB와 분리하여 관리하기 위해 In-memory DB에 저장할 계획을 가지고 있다.
대표적인 In-memory DB로 redis와 memcached가 있는데 어떤 차이점을 살펴보자.
공통점
- 1ms 이하의 응답시간을 제공한다.
- 문법적으로 사용하기 쉽고 개발이 편리하다.
- 데이터를 여러 노드에 분산하여 저장할 수 있다.
Redis
- String, Set, Hash, List 등 복잡한 데이터 타입을 지원한다.
- ub / Sub 패턴을 사용해서 서버의 이벤트를 클라이언트에 알릴 수 있다.
- 우선 순위를 설정할 수 있다.
- Disk와 Memory를 모두 사용한다.
- 백업 및 복원이 가능하다.
Memcached
- String 데이터 타입만 지원한다.
- 리소스를 비교적 적게 사용한다.
- Disk는 사용하지 않고 Memory만 사용한다.
- Memory 부족시 LRU 알고리즘을 이용하여 기존의 데이터를 삭제한다.
- Multi-Thread를 지원하기 때문에 Multi Core를 활용할 수 있어 속도가 빠르다.
정리
정리하면 Memcached의 경우 Redis에 비해 확장성과 유연성이 떨어진다. 하지만 최적화의 효율을 극대화할 수 있기 때문에 높은 성능을 보장하고 자원 낭비가 적다.
반면 Redis는 Pub / Sub 패턴을 사용한 실시간 스트리밍, 채팅, 피드 등이 가능하고, 더 다양한 데이터 타입을 지원하는 등 개발하기 편리한 환경을 제공한다. 성능은 Memcached보다 비교적 떨어진다.
본인의 경우 확실하게 세션 서버를 사용할 목적이었으면 Memcached를 사용했을 것 같지만 랭킹이나 휴대 전화 인증 서버 등의 역할도 부여하기 위해서 Redis를 선택하게 되었다.
Reference
'Database > NoSQL' 카테고리의 다른 글
NoSQL - MongoDB는 대용량 데이터를 처리하는 Database일까? (0) | 2023.03.16 |
---|---|
ElasticSearch 이해하기! (0) | 2023.02.23 |
레디스 데이터 타입 정리! (0) | 2022.12.29 |
MongoDB란 무엇인가?! (기본 이해하기!) (0) | 2022.12.28 |
Redis에 대해 자세히 알아보기! (+ Cache, WriteBack, Cluster, ...) (0) | 2022.11.14 |