Redis Pub/Sub
Pub/Sub는 여러 데이터 퍼블리셔로부터 데이터를 수집하고 1인 이상의 구독자가 퍼블리셔에 직접 연결하지 않고도 실시간으로 피드를 소비할 수 있도록 하는 수단입니다. 이 패턴을 사용하면 시스템을 더 쉽게 확장할 수 있으며 언제든지 퍼블리셔와 구독자를 추가하거나 제거할 수 있습니다.
Redis 사용하면 퍼블리셔와 구독자가 인터페이스하는 퍼블리셔/구독자 채널을 만들 수 있습니다. 채널의 메시지는 각 구독자에게 최대 한 번만 전송되므로 중복되지 않아야 하는 트리거 작업에 이상적이지만, 채널 메시지는 한 번 전송되면 지속되지 않으므로 주의해야 합니다.
사용 사례:
- 실시간 메시지.
- 임시 다중 사용자 채팅.
- 로그 스트리밍.
채널 구독하기
구독자는 단순히 '구독하기
> SUBSCRIBE mychannel
구독자가 둘 이상의 채널을 구독해야 하는 경우에도 가능합니다:
> SUBSCRIBE mychannel1 mychannel2 mychannel3
채널을 구독한다는 것은 구독자가 구독한 후 해당 채널에 게시되는 모든 메시지를 수신한다는 의미입니다. 이전 메시지는 유지되지 않으므로 구독자가 연결하고 구독해야 메시지가 수신될 때마다 메시지를 받을 수 있습니다.
채널이 존재하지 않으면 구독자에게 오류가 표시되지 않으며 메시지도 표시되지 않습니다.
채널에 게시하기
퍼블리셔는 ' PUBLISH <channel> <message>
' 명령을 사용하여 채널에 퍼블리시할 수 있습니다:
> PUBLISH mychannel "my first message"
를 클릭하면 모든 구독자가 다음과 같은 메시지를 받게 됩니다:
1) "message"
2) "mychannel"
3) "my first message"
구독 메시지에는 채널 이름과 메시지 자체가 포함됩니다.
일반적인 패턴은 JSON 객체를 메시지 텍스트로 전송하는 것입니다:
> PUBLISH mychannel '{"id":"1234","name":"db14","msg":"Out of Memory"}'
' PUBLISH
'의 반환 값은 호출자에게 메시지를 수신한 구독자 수를 알려주는 정수입니다.
선택적 구독
전체 채널을 구독하는 대신 와일드카드 채널을 구독할 수 있습니다. 채널 이름을 신중하게 지정하면 예를 들어 애플리케이션의 모든 로그, 프로덕션 로그만 또는 프로덕션 데이터베이스의 로그만 볼 수 있습니다.
> PSUBSCRIBE *
> PSUBSCRIBE prod_*
> PSUBSCRIBE prod_database_*
> PSUBSCRIBE prod_database_db57_activity_*
구독 취소
구독자는 구독 중인 모든 채널의 구독을 취소할 수 있습니다:
> UNSUBSCRIBE