Database/NoSQL

In-memory DB 비교 (Redis vs Memcached)

JaeHoney 2022. 7. 10. 14:39

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