소개
이 랩에서는 Redis 의 Pub/Sub 메시징 시스템을 탐색합니다. 채널 구독, 메시지 게시 및 구독 취소 방법을 배우게 됩니다. 이 랩에서는 SUBSCRIBE, PUBLISH, UNSUBSCRIBE, PSUBSCRIBE 명령을 사용하여 기본 작업을 안내합니다.
SUBSCRIBE 명령으로 채널 구독하기
이 단계에서는 SUBSCRIBE 명령을 사용하여 Redis 에서 채널을 구독하는 방법을 배웁니다. 채널을 구독하면 해당 채널에 게시된 메시지를 받을 수 있습니다. 이는 Redis 의 Pub/Sub 메시징 시스템에서 기본적인 개념입니다.
터미널 1: 채널 구독
첫 번째 터미널 (이하 터미널 1이라고 부름) 을 엽니다. LabEx 환경에서 제공하는 Xfce 터미널을 사용할 수 있습니다.
redis-cli 명령을 사용하여 Redis 서버에 연결합니다:
redis-cli
127.0.0.1:6379>와 같은 Redis 프롬프트가 표시됩니다.
SUBSCRIBE 명령을 사용하여 mychannel이라는 채널을 구독합니다:
SUBSCRIBE mychannel
출력은 다음과 유사하게 표시됩니다:
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1
출력을 분석해 보겠습니다:
"subscribe": 채널 구독에 성공했음을 나타냅니다."mychannel": 구독한 채널의 이름입니다.(integer) 1: 현재 구독 중인 채널의 수입니다.
중요: Redis CLI 세션이 활성화되어 채널에 구독된 상태로 터미널 1을 열어 두세요. 이 터미널을 닫거나 Ctrl+C 를 누르면 채널에서 구독이 취소되므로 주의하십시오. 다음 단계에서 메시지를 게시하기 위해 두 번째 터미널을 사용할 것입니다.
PUBLISH 명령으로 메시지 게시하기
이 단계에서는 PUBLISH 명령을 사용하여 Redis 채널에 메시지를 게시하는 방법을 배웁니다. 메시지 게시 (Publishing) 는 Pub/Sub 시스템의 핵심 기능으로, 특정 채널의 모든 구독자에게 데이터를 보낼 수 있게 해줍니다.
터미널 2: 메시지 게시
두 번째 터미널(이하 터미널 2라고 부름) 을 엽니다. Xfce 터미널에서 새 탭을 열 수 있습니다.
redis-cli 명령을 사용하여 Redis 서버에 연결합니다:
redis-cli
127.0.0.1:6379>와 같은 Redis 프롬프트가 표시됩니다.
이제 PUBLISH 명령을 사용하여 mychannel 채널에 메시지를 게시합니다:
PUBLISH mychannel "Hello, Redis!"
터미널 2의 출력은 메시지를 받은 클라이언트 수를 나타냅니다:
(integer) 1
이 경우 출력은 (integer) 1입니다. 이전 단계에서 터미널 1에서 mychannel을 구독하는 활성 구독이 있기 때문입니다.
터미널 1 에서 메시지 관찰하기
이제 터미널 1(1 단계에서 mychannel을 구독한 곳) 로 돌아갑니다. 방금 게시한 메시지가 실시간으로 표시되는 것을 볼 수 있습니다:
1) "message"
2) "mychannel"
3) "Hello, Redis!"
이는 다음을 나타냅니다:
"message": 게시된 메시지임을 나타냅니다."mychannel": 메시지가 게시된 채널입니다."Hello, Redis!": 실제 메시지 내용입니다.
실시간 메시징 테스트하기
이제 실시간 메시징을 실험해 볼 수 있습니다:
- 터미널 2로 돌아가서 더 많은 메시지를 게시합니다.
- 터미널 1로 전환하여 메시지가 즉시 나타나는 것을 확인합니다.
- 다른 메시지를 게시하여 라이브 통신을 관찰해 보세요.
예시 - 터미널 2에서:
PUBLISH mychannel "This is message 2"
PUBLISH mychannel "Real-time messaging works!"
중요: 터미널 1과 터미널 2 모두 redis-cli 세션을 활성 상태로 유지하세요. 다음 단계에서도 두 터미널을 계속 사용할 것입니다.
UNSUBSCRIBE 명령으로 구독 취소하기
이 단계에서는 UNSUBSCRIBE 명령어를 사용하여 Redis 채널 구독을 취소하는 방법을 배웁니다. 구독 취소는 특정 채널의 구독자 목록에서 클라이언트를 제거하여 해당 채널에 게시된 추가 메시지를 수신하지 못하도록 합니다.
터미널 1: 구독 모드 종료
터미널 1 (현재 mychannel을 구독 중인 곳) 으로 이동합니다. 구독 상태가 "Reading messages... (press Ctrl-C to quit)"으로 표시되는 것을 볼 수 있습니다.
터미널 1 이 구독 모드에 있기 때문에 일반 Redis 명령어를 직접 실행할 수 없습니다. 구독을 취소하려면 먼저 구독 모드를 종료해야 합니다.
Ctrl+C를 눌러 구독 모드를 종료합니다.redis-cli 세션이 종료되고 터미널 프롬프트로 돌아가는 것을 볼 수 있습니다.
Redis 에 다시 연결합니다.
redis-cli이제
UNSUBSCRIBE명령어를 실행할 수 있습니다 (연결을 끊는 것만으로도 이미 구독이 취소되었으므로 필수는 아닙니다).UNSUBSCRIBE mychannel
참고: Ctrl+C를 눌렀을 때 모든 구독에서 실제로 연결이 끊어졌습니다. UNSUBSCRIBE 명령어는 시연 목적으로 표시되었지만, 실제로는 연결을 끊으면 모든 채널에서 자동으로 구독이 취소됩니다.
터미널 1의 출력은 다음과 같습니다.
1) "unsubscribe"
2) "mychannel"
3) (integer) 0
출력을 분석해 보겠습니다.
"unsubscribe": 채널에서 구독을 취소했음을 나타냅니다."mychannel": 구독을 취소한 채널의 이름입니다.(integer) 0: 현재 구독 중인 채널의 수입니다.mychannel의 구독을 취소했으므로 이제 0 입니다.
터미널 2: 구독 취소 후 게시 테스트
이제 터미널 2로 전환하여 mychannel에 다른 메시지를 게시합니다.
PUBLISH mychannel "Is anyone still there?"
터미널 2의 출력은 다음과 같습니다.
(integer) 0
이는 터미널 1에서 채널 구독을 취소했기 때문에 어떤 클라이언트도 메시지를 수신하지 못했음을 나타냅니다.
메시지 수신 없음 확인
터미널 1을 확인합니다. 채널 구독을 취소했기 때문에 새로운 메시지가 나타나지 않는 것을 볼 수 있습니다.
이는 채널 구독을 취소하면 해당 채널에 게시된 추가 메시지를 수신하지 못하게 되지만, 게시자는 여전히 메시지를 보낼 수 있다는 것을 보여줍니다 (하지만 아무도 수신하지는 못합니다).
중요: 다음 단계를 위해 두 터미널과 해당 redis-cli 세션을 모두 활성 상태로 유지하십시오.
PSUBSCRIBE 명령으로 패턴 구독하기
이 단계에서는 Redis 의 PSUBSCRIBE 명령을 사용하여 패턴으로 채널을 구독하는 방법을 배웁니다. PSUBSCRIBE를 사용하면 지정된 패턴과 일치하는 여러 채널을 구독할 수 있습니다. 이는 각 채널을 개별적으로 구독하지 않고도 관련 채널 그룹의 메시지를 수신하려는 경우 유용합니다.
터미널 1: 패턴 구독
이전 단계에서 mychannel의 구독을 취소했으므로, 터미널 1에는 일반 Redis 프롬프트가 표시되어야 합니다.
터미널 1에서 PSUBSCRIBE 명령을 사용하여 news.* 패턴과 일치하는 채널을 구독합니다:
PSUBSCRIBE news.*
출력은 다음과 유사하게 표시됩니다:
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "news.*"
3) (integer) 1
출력을 분석해 보겠습니다:
"psubscribe": 패턴에 성공적으로 구독했음을 나타냅니다."news.*": 구독한 패턴입니다..*는 모든 문자와 일치하는 와일드카드입니다.(integer) 1: 현재 구독 중인 패턴의 수입니다.
터미널 2: 패턴 일치 채널에 게시하기
터미널 2로 이동하여 PUBLISH 명령을 사용하여 news.sports 채널에 메시지를 게시합니다:
PUBLISH news.sports "Sports news update!"
터미널 2의 출력은 메시지를 받은 구독자 수를 나타냅니다:
(integer) 1
패턴 일치 관찰하기
터미널 1(패턴을 구독한 곳) 으로 다시 전환합니다. 방금 게시한 메시지가 표시되는 것을 볼 수 있습니다:
1) "pmessage"
2) "news.*"
3) "news.sports"
4) "Sports news update!"
이는 다음을 나타냅니다:
"pmessage": 패턴 일치 메시지임을 나타냅니다."news.*": 일치한 패턴입니다."news.sports": 메시지가 게시된 실제 채널입니다."Sports news update!": 메시지 내용입니다.
여러 채널 테스트하기
터미널 2에서 패턴과 일치하는 다른 채널에 게시해 보세요:
PUBLISH news.technology "New AI breakthrough!"
PUBLISH news.weather "Sunny skies ahead!"
PUBLISH sports.basketball "This won't match the pattern"
터미널 1에서 news.* 패턴과 일치하는 채널의 메시지만 수신되고, sports.basketball은 news.* 패턴과 일치하지 않기 때문에 수신되지 않는 것을 관찰할 수 있습니다.
중요: 두 터미널과 해당 redis-cli 세션을 모두 활성 상태로 유지하세요. 패턴 구독은 여러 관련 채널을 동시에 수신 대기하는 방법을 보여줍니다.
요약
이 실습에서는 Redis Pub/Sub 메시징의 기본 사항을 살펴보았습니다. SUBSCRIBE 명령을 사용하여 채널을 구독하는 방법, PUBLISH 명령을 사용하여 채널에 메시지를 게시하는 방법, UNSUBSCRIBE 명령을 사용하여 채널 구독을 취소하는 방법, 그리고 PSUBSCRIBE 명령을 사용하여 패턴으로 채널을 구독하는 방법을 배웠습니다. 이러한 명령은 Redis 를 사용하여 실시간 메시징 애플리케이션을 구축하는 데 필수적입니다.


