Database

[Redis] Pub/Sub - 테스트

비번변경 2024. 8. 21. 12:24

개요

2024.07.30-[Redis] Pub/Sub 개념에서 Publish, Subscriber 개념에 대해 적어두었었다. 이 글에서는 redis-cli를 사용해 직접 테스트를 해보자.

 

테스트를 하기 위해서는 먼저 Redis가 있어야 한다. 2023.05.30-[Redis] 개념 및 설치/실행을 참고하여 설치한다.

또한 Publisher, Subscriber가 필요하므로 redis-cli를 각각 다른 세션에서 실행하여 테스트한다.

 

 

관련 명령어

Publish, Subscribe와 관련된 명령어는 다음과 같다. 

명령어 설명
subscribe <CHANNEL>  채널을 구독하여 메시지를 수신받는다.
한 번에 여러 채널을 구독할 수 있다.
publish <CHANNEL> <MESSAGE> 메시지를 채널에 송신한다.
pubsub 서버에 등록된 채널이나 패턴을 조회한다.
psubscribe <PATTERN> 채널 이름을 패턴으로 등록한다.
unsubscribe <CHANNEL> 채널 구독을 해제한다.
punsubscribe <PATTERN> 패턴으로 구독한 채널의 구독을 해제한다.

 

 

subscribe

subscribe는 명시한 채널을 구독한다. 채널 이름을 여럿 전달하여 여러 개의 채널을 구독할 수 있다. 결괏값으로는 구독한 채널명과 채널을 구독하고 있다는 의미의 값 1을 반환한다.

subscribe <CHANNEL> 
subscribe <CHANNEL>, <CHANNEL>

-- 예시
subscribe ch1

구독은 ctrl + c 로 종료할 수 있다.

 

 

publish

publish는 지정한 채널에 메시지를 게시한다. 

publish <CHANNEL> <MESSAGE>

-- 예시
publish ch1 'hello, world!'

예시로 ch1라는 채널에 hello, world!라는 메시지를 게시했다. ch1를 구독하고 있는 클라이언트 쪽을 확인해 보면 아래와 같이 publisher가 게시한 메시지를 확인할 수 있다.

 

 

psubscribe

psubscribe 명령은 채널을 패턴으로 구독하는 명령어다.

psubscribe <PATTERN>

-- 예시
psubscribe ch*

이 때 publisher가 ch2이라는 채널로 메시지를 전달하면, 다음과 같이 전달받은 메시지를 확인할 수 있다.

 

 

pubsub

Redis 관리자가 subscriber를 관리할 때 사용하는 명령어다. 활성화된 채널을 확인하거나, 특정 채널을 구독하고 있는 subscriber의 수를 확인하는 등의 작업을 수행할 수 있다. 아래 내용은 redis-cli에서 pubsub에 대한 help 명령으로 확인할 수 있는 내용이다.

1) PUBSUB <subcommand> arg arg ... arg. Subcommands are:
2) CHANNELS [<pattern>] -- Return the currently active channels matching a pattern (default: all).
3) NUMPAT -- Return number of subscriptions to patterns.
4) NUMSUB [channel-1 .. channel-N] -- Returns the number of subscribers for the specified channels (excluding patterns, default: none).

 

- 채널 확인

channels 명령어로는 활성화되어 있는 채널을 확인할 수 있다.

pubsub channels [<PATTERN>]

-- 예시
pubsub channels

만약 활성화되어 있는 채널이 없으면 (empty list or set)와 같은 반환을 확인할 수 있다.

 

- 채널 구독 수 확인

numsub 명령은 채널을 구독하고 있는 클라이언트의 수를 반환한다. 채널 pattern으로 구독하고  있는 클라이언트는 제외한 값을 확인할 수 있다.

pubsub numsub <CHANNEL>

-- 예시
pubsub numsub ch1

 

- 패턴 채널 구독 수 확인

numpat은 psubscribe으로 채널을 구독하고 있는 클라이언트의 수를 반환한다. 확인하고자 하는 채널 패턴을 별도로 지정할 수 없기 때문에 항상 모든 클라이언트의 수를 반환한다.

pubsub numpat

 

 

참고 문서

🗃️ REDIS의 PUB/SUB 기능 (채팅 / 구독 알림)
https://lucas-owner.tistory.com/60