복붙노트

[REDIS] 이유는 동일한 연결에 PUB과 서브 역할을하는 하나의 레디 스 클라이언트를 가질 수 없습니다?

REDIS

이유는 동일한 연결에 PUB과 서브 역할을하는 하나의 레디 스 클라이언트를 가질 수 없습니다?

내 정신 모델은 내가 특정 채널에 등록하고는 '채팅'의 그 것이었다 나는이 채널에 메시지를 게시 할 수 있습니다.

해결법

  1. ==============================

    1.술집 / 하위 비동기이기 때문에, 게시 된 메시지는 명령에 대한 응답을 기대하는 경우를 포함하여 언제든지 나타날 수 있습니다.

    술집 / 하위 비동기이기 때문에, 게시 된 메시지는 명령에 대한 응답을 기대하는 경우를 포함하여 언제든지 나타날 수 있습니다.

    서버가 실제로 수신하기 전에 메시지의 내용에 따라, 당신이 명령에 유효한 응답을받을 수 - 레디 스 정렬 일의 네트워크 대기 시간이 몇 가지 흥미로운 효과를 일으킬 수 있습니다 일반적으로 방지는 단일 스레드는하지만.

    즉, 당신이 정말로 원한다면 당신은 아마 단일 연결을 사용할 수 말했다 - "해야하지" "이 수 없습니다"와 동일하지 않고, 발에 자신을 촬영하지 못하도록하려고하지 않는 심플한 디자인 철학을 다음과 레디 스. 그러나 서버에 열어 두 개의 연결에 훨씬 쉽습니다. 당신이 클라이언트 당 두 개의 연결로 연결 제한을 치면 당신은 아마 조만간 어쨌든 클라이언트 당 하나 개의 연결에 문제가 발생하게됩니다.

  2. ==============================

    2.클라이언트 문제가 구독 또는 PSUBSCRIBE하면 해당 연결이 "술집 / 하위"모드로 전환된다. 그 시점에서, 단지 서브 스크립 션 세트가 유효 수정하는 것이 명령. 서브 스크립 션 세트가 비어있는 경우, 연결은 일반 모드로 되돌아가됩니다.

    클라이언트 문제가 구독 또는 PSUBSCRIBE하면 해당 연결이 "술집 / 하위"모드로 전환된다. 그 시점에서, 단지 서브 스크립 션 세트가 유효 수정하는 것이 명령. 서브 스크립 션 세트가 비어있는 경우, 연결은 일반 모드로 되돌아가됩니다.

    당신이 술집 / 서브 모드에있는 동안 레디 스에 정기적으로 명령을 전송해야하는 경우, 또 다른 연결을 엽니 다.

  3. from https://stackoverflow.com/questions/7310613/why-cant-i-have-a-single-redis-client-acting-as-pub-and-sub-in-the-same-connect by cc-by-sa and MIT license