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 — 메시지 브로커
- 메시지를 다른 대기열로 보낼 수 있는 라우팅 시스템을 갖춤
- 메시지 우선순위 지원
- 크고 복잡한 메시지에 적합
- 속도보다 지속성이 중요한 서비스에 적합
Redis — 인메모리 Cache 서버
- Key-Value를 이용해, Celery가 처리할 작업을 보낸 후 Cache에서 해당 Key 제거
- Database에 접근하기 전, 메모리에서 Cache를 가져다 쓴다는 점에서 속도가 빠름
- 지속성이 중요하지 않고, 약간의 손실을 견딜 수 있는 짧은 보존 메시지에 적합
RabbitMQ 와 Redis 를 대체할 수 있는 것들은?
- Kafka
- ActiveMQ
- ZeroMQ
- Amazon SNS
- Gearman
[ 참고 자료]