Redis Pub/Sub 과 Redis Streams
작성일자 : 2024년 11월 24일
개요
Redis는 캐시 데이터 저장소로 널리 알려져 있지만, 단순한 데이터 캐싱 그 이상으로 활용할 수 있습니다.
Redis는 메시징 및 이벤트 중심 아키텍처를 지원하기 위해 Redis Pub/Sub와 Redis Streams 두 가지 기능을 제공합니다.
이번 포스팅에서는 Redis Pub/Sub와 Redis Streams의 주요 차이점, 각각의 사용 시점, 장단점을 자세히 살펴보고, 어떤 상황에서 어떤 기능을 선택해야 할지 알아보겠습니다.
Redis Pub/Sub
Redis Pub/Sub은 Publisher와 Subscriber가 특정 채널을 통해 메시지를 주고받는 방식으로 작동합니다.
구조
Publisher는 특정 채널에 메시지를 게시하고, Subscriber는 관심 있는 채널을 통해 메시지를 수신합니다.
특징
- Real-Time 메시징 제공
- Redis에 메시지를 저장하지 않음
- 구독자가 실시간으로 연결되어 있어야 메시지를 수신 가능
Redis Pub/Sub의 사용 사례
- 실시간 채팅: 사용자 간 메시지를 실시간으로 전달
- 알림 브로드캐스팅: 여러 클라이언트에게 실시간 알림 전달
- 이벤트 중심 시스템: 간단한 이벤트를 트리거하고 전달
Redis Streams
Redis Streams는 Redis 5.0에 도입된 고급 메시징 기능으로, 메시지 브로커와 분산 로그의 장점을 결합한 데이터 구조입니다.
구조
메시지는 로그처럼 Redis Streams에 저장되며, Consumer는 자신의 속도에 맞춰 메시지를 소비할 수 있습니다.
특징
- 메시지를 Redis에 저장
- 메시지를 시간 순서대로 정렬
- Consumer 그룹 지원(여러 소비자가 메시지를 협력적으로 처리)
Redis Streams의 사용 사례
- 메시지 큐: 메시지를 지속적으로 저장하며, 클라이언트가 필요에 따라 처리
- 이벤트 소싱: 시스템에서 발생한 모든 이벤트의 순서를 기록하고 추적
- 복잡한 스트림 처리: 메시지 필터링, 처리, 승인 등 고급 기능 구현