RabbitMQ 와 Redis 의 차이

개발자들은 RabbbitMQ 를 "메세징 브로커(messagin broker: 전달 중개인, 역주: 마치 우체국과 같은 것)"라고 말한다.

RabbitMQ 는 응용 프로그램(applications)에게 메시지를 주고 받을 수 있으며, 메시지가 수신될 때까지 안전하게 있을 수 있도록 하는 공용 플래폼(common platform)을 제공한다.

 

반면, Redis 는 "디스크에 상주하는 인메모리 데이터베이스" 라고 설명한다.

Redis 는 BSD 라이센스된 진보된 키-값 보관용(advanced key-value store) 오픈소스다. 키가 문자열, 해쉬, 리스트 세트, 정렬된 세트를 포함할 수 있기 때문에 데이터 구조 서버(data structure server)라고 불린다.

 

RabbitMQ 와 Redis 는 주로 "메시지 큐" 와 "인메모리 데이터베이스" 툴로서 각각 분류된다.

 

개발자들이 경쟁 제품들에 비해 RabbitMQ 를 고려하는 주된 이유는 "그것이 빠르며(fast), 좋은 메트릭스(정량적 분석 기법)/감시(모니터링) 작업"이 가능하기 때문이며, Redis 를 고르는 주된 이유는 "성능(Performance)"을 말한다.

 

RabbitMQ 와 Redis 는 둘다 오픈 소스 툴이다. Redis 는 37.4K 깃허브 스타(GitHub stars)를, 14.4K 깃허브 포크(GitHub forks)를 나타내어 5.95K, 1.78K 를 가지는 RabbitMQ 보다 훨씬 인기있는 것으로 나타났다.

 

Redis와 RabbitMQ 언제 사용할까?

RabbitMQ — 메시지 브로커

  1. 메시지를 다른 대기열로 보낼 수 있는 라우팅 시스템을 갖춤
  2. 메시지 우선순위 지원
  3. 크고 복잡한 메시지에 적합
  4. 속도보다 지속성이 중요한 서비스에 적합

 

Redis — 인메모리 Cache 서버

  1. Key-Value를 이용해, Celery가 처리할 작업을 보낸 후 Cache에서 해당 Key 제거
  2. Database에 접근하기 전, 메모리에서 Cache를 가져다 쓴다는 점에서 속도가 빠름
  3. 지속성이 중요하지 않고, 약간의 손실을 견딜 수 있는 짧은 보존 메시지에 적합

 

RabbitMQ 와 Redis 를 대체할 수 있는 것들은?

  • Kafka
  • ActiveMQ
  • ZeroMQ
  • Amazon SNS
  • Gearman

[ 참고 자료]

 

+ Recent posts