redis 게시 구독동력 노드 자바 대학 정리
명령 프로필
redis 매 뉴 얼 에서 보 실 수 있 습 니 다.사실'게시,구독'모드 는 겨우 6 개의 명령 입 니 다.다음은 제 가 일일이 설명해 드 리 겠 습 니 다.
1. subscribe
SUBSCRIBE channel [channel ...]
주어진 채널 하나 이상 의 정 보 를 구독 합 니 다. 위의 공식 적 인 해석 을 보면 그것 의 게임 방법 은 약간 현실 생활 에서 우리 가 라디오 를 듣 는 것 과 같은 이치 가 있다.라디오 를 듣 고 싶 으 면 우 리 는 무엇 을 해 야 합 니까?틀림없이 주파수 변조 입 니 다.정확 한 채널 에서 만 우 리 는 듣 기 좋 은 프로그램 을 들 을 수 있 습 니 다.그래서 subscribe 는 먼저 채널(channel)을 구독 해 야 합 니 다.다음은 제 가 예 를 들 어 두 개의 client 를 열 어 각각 msg 를 구독 하고 있 습 니 다. 이 채널,예 를 들 면 아래 와 같다.
2.publish
지금까지 이 두 subscibe 는 msg 라 는 채널 을 감시 하고 있 습 니 다.그 다음 에 msg 채널 에 소식 이 전해 지면 반드시 subscribe 에 받 아들 일 것 입 니 다.먼저 redis 매 뉴 얼 에서 이 명령 을 어떻게 사용 하 는 지 살 펴 보 겠 습 니 다.
PUBLISH channel message
메시지 message 지 정 된 채널 로 보 내기 channel 。위의 명령 의 용법 을 보고 나 도 안심 이 되 었 다.
보 셨 습 니까?Publish 는 msg 라 는 채널 에서 메 시 지 를 보 낸 후에 subscribe 에 의 해 감 시 를 받 았 습 니 다.그리고 각각 출력 되 었 습 니 다.자,지금까지 가장 기본 적 인 게시 구독 모드 는 이 렇 습 니 다.간단 하지 않 습 니까?사실은?? 바로 이렇게 간단 합 니 다.그런데 가끔 우 리 는 이런 수요 가 있 습 니 다.바로 제 가 key 와 모호 하 게 일치 할 수 있 습 니까?예 를 들 어 china 를 접두사 로 하 는 모든 채널 을 구독 하 라 는 것 이다.그래도 할 수 있다 면 정말 대단 하 다.강력 한 redis 는 자 연 스 럽 게 이 점 을 할 수 있 습 니 다.명령 은 Psubscribe 입 니 다.
3. Psubscribe
PSUBSCRIBE pattern [pattern ...]
주어진 모드 에 맞 는 채널 을 하나 이상 구독 합 니 다.모드 * 일치 문자 로,예 를 들 면 it* 모든 it 시작 하 는 채널( it.news 、 it.blog 、 it.tweets 등등), news.* 모든 news. 시작 하 는 채널( news.it 、 news.global.today 등등
위의 설명 을 보고 당신 은 마음속 으로 생각 하고 있 을 것 입 니 다.이것 이 바로 정칙 이 일치 하 는 것 이 아 닙 니까?그리고 접두사'P'는 Pattern 이라는 뜻 입 니 다.그 렇 죠?다음은 모든 china 를 접두사 로 하 는 channel 을 구독 하 겠 습 니 다.
자,가장 많이 사용 되 는 것 은 바로 이 세 가지 명령 입 니 다.다음은 코드 를 간단하게 분석 하 겠 습 니 다.
둘: 소스 코드 단순 분석
사실 redis 의 게시 구독 모드 는 RedisServer 아래 의 pubsub_채널 사전 화해시키다 pubsub_patterns 배열 에 저 장 된 모든 조작 코드
pubsub.c 파일 아래 다음 그림:
1. pubsub_channels
이것 은 사전 구조 입 니 다.주석 을 통 해 키 는 channel 이 고 value 는 list 라 는 것 을 알 아야 합 니 다.
2. pubsub_patterns
주석 에서 도 볼 수 있 습 니 다.사실은 패턴 에 맞 는 subscribe 를 저장 하 는 clients 목록 입 니 다.그 렇 죠?list 배열 로 이 루어 집 니 다.
3. subcribeCommand
아래 코드 를 통 해 당신 은 머 릿 속 에 윤곽 이 있 습 니까?사실 이 pubsubchannels 는 역시 key=channel,value=list 의 저장 모드 입 니 다.이 list 는 이른바 clients 목록 입 니 다.그러면 어떤 key 가 어떤 clients 를 끊 었 는 지 알 수 있 습 니 다.그 렇 죠?Publish 를 다시 하면 이 list 를 옮 겨 다 니 면 결 과 를 알 수 있 습 니 다.
4. publishCommand
이전에 도 말 했 듯 이 Publish 의 원 리 는 매우 간단 하 다.바로 사전 에 있 는 channel 이라는 key 를 찾 아 clients 를 얻 은 후에 client 를 옮 겨 다 니 며 메 시 지 를 보 내 는 것 이다.
같은 이치,pubsubpatterns 도 거의 실현 되 지 않 았 습 니 다.pubsub.c 라 는 소스 코드 파일 을 간단하게 보면 거의 다 알 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redis 해시에 대한 완벽한 가이드변경 가능하므로 필요에 따라 쉽게 변경하고 업데이트할 수 있습니다. Redis 해시는 구조가 평평하므로 JSON에서와 같이 여러 수준을 가질 수 없습니다. redis 해시의 명명 규칙은 hash:key 로 입력되므로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.