redis 게시 구독동력 노드 자바 대학 정리

3772 단어 redis게시 구독
사실 많은 MQ 제품 에 이런 모델 이 존재 합 니 다.우리 가 자주 듣 는 예 는 바로 메 일 구독 장면 입 니 다.무슨 뜻 입 니까?즉,100 명 이 당신 의 블 로 그 를 구독 한 것 입 니 다.만약 에 블 로 거들 이 글 을 발표 하면 100 명 이 동시에 알림 메 일 을 받 습 니 다.이 장면 을 제외 하고 다른 장면 을 찾 을 수 있 습 니까?물론 있 습 니 다.생각해 보 세 요.메모리 에 읽 기와 쓰기 가 분 리 된 프로그램 을 만 들 려 면 데이터 의 완전 성 을 유지 하기 위해 서 는 기록 할 때 도 각 읽 기 메모리 프로그램 에 배포 해 야 하 는 것 이 아 닙 니까?그 러 니까 장면 이 많아 요.발굴 에 있어 요~~ 다음은 기본 명령 부터 시작 합 니 다.
명령 프로필

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 라 는 소스 코드 파일 을 간단하게 보면 거의 다 알 수 있 습 니 다.

좋은 웹페이지 즐겨찾기