[REDIS] 이유는 동일한 연결에 PUB과 서브 역할을하는 하나의 레디 스 클라이언트를 가질 수 없습니다?
REDIS이유는 동일한 연결에 PUB과 서브 역할을하는 하나의 레디 스 클라이언트를 가질 수 없습니다?
내 정신 모델은 내가 특정 채널에 등록하고는 '채팅'의 그 것이었다 나는이 채널에 메시지를 게시 할 수 있습니다.
해결법
-
==============================
1.술집 / 하위 비동기이기 때문에, 게시 된 메시지는 명령에 대한 응답을 기대하는 경우를 포함하여 언제든지 나타날 수 있습니다.
술집 / 하위 비동기이기 때문에, 게시 된 메시지는 명령에 대한 응답을 기대하는 경우를 포함하여 언제든지 나타날 수 있습니다.
서버가 실제로 수신하기 전에 메시지의 내용에 따라, 당신이 명령에 유효한 응답을받을 수 - 레디 스 정렬 일의 네트워크 대기 시간이 몇 가지 흥미로운 효과를 일으킬 수 있습니다 일반적으로 방지는 단일 스레드는하지만.
즉, 당신이 정말로 원한다면 당신은 아마 단일 연결을 사용할 수 말했다 - "해야하지" "이 수 없습니다"와 동일하지 않고, 발에 자신을 촬영하지 못하도록하려고하지 않는 심플한 디자인 철학을 다음과 레디 스. 그러나 서버에 열어 두 개의 연결에 훨씬 쉽습니다. 당신이 클라이언트 당 두 개의 연결로 연결 제한을 치면 당신은 아마 조만간 어쨌든 클라이언트 당 하나 개의 연결에 문제가 발생하게됩니다.
-
==============================
2.클라이언트 문제가 구독 또는 PSUBSCRIBE하면 해당 연결이 "술집 / 하위"모드로 전환된다. 그 시점에서, 단지 서브 스크립 션 세트가 유효 수정하는 것이 명령. 서브 스크립 션 세트가 비어있는 경우, 연결은 일반 모드로 되돌아가됩니다.
클라이언트 문제가 구독 또는 PSUBSCRIBE하면 해당 연결이 "술집 / 하위"모드로 전환된다. 그 시점에서, 단지 서브 스크립 션 세트가 유효 수정하는 것이 명령. 서브 스크립 션 세트가 비어있는 경우, 연결은 일반 모드로 되돌아가됩니다.
당신이 술집 / 서브 모드에있는 동안 레디 스에 정기적으로 명령을 전송해야하는 경우, 또 다른 연결을 엽니 다.
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
'REDIS' 카테고리의 다른 글
[REDIS] 수평 레디 스와 socket.io를 확장 (0) | 2020.01.17 |
---|---|
[REDIS] 셀러리 celerybeat 장고없이 데이터베이스 스케줄러를 사용할 수 있습니까? (0) | 2020.01.17 |
[REDIS] 어떻게 레디 스 메모리 누수를 결정? (0) | 2020.01.17 |
[REDIS] 관계형 DB 메모리? (0) | 2020.01.17 |
[REDIS] 레디 스의 키 스페이스 행사하지 발사 (0) | 2020.01.16 |