2017-12-20 4 views
0

매우 기본적인 Redis pubsub 문제가 있습니다. GEOADD 명령을 통해 추가 된 항목에 PSUBSCRIBE을 입력하고 싶습니다. 여기 내가 한 일이 있습니다 :PSUBSCRIBE 및 GEOADD

먼저 MONITOR 명령을 실행하십시오.

그런 다음 새 콘솔에 나는 또한 실행했습니다

PSUBSCRIBE __geo:* 

을 그리고 또 다른 redis-cli 세션에서 내가 발행 한 :

GEOADD users 40.0 -73.0 foo 

아무것도 가입자로 가입 온다하지만 난을 확인할 수 있습니다 항목이 모니터를 통해 추가되었습니다.

답변

2

3 것들 :

1) KEYSPACE 이벤트에 대한 올바른 CONFIG SET이 있는지 확인합니다. CONFIG SET notify-keyspace-events AKE은 디버깅에 이상이없는 모든 것을 얻을 수 있지만 유스 케이스의 경우 대부분 CONFIG SET notify-keyspace-events zE이 필요합니다.

2) 모든 Redis GEO * 명령은 실제로 just a version of a sorted set입니다. 그들은 그들 자신의 통보를 가지고 있지 않습니다. GEOADD은 keyevents 메시지에 실제로 ZADD처럼 표시됩니다. 또한 키 공간 이벤트는 약간 다르게 형식화됩니다. GEOADD 명령을 청취하려면 SUBSCRIBE [email protected]__:zadd을 수행해야합니다.

3) GEO * 및 Z * 명령은 실제로 세트이므로, 쓰기를 트리거하지 않는 명령은 키 이벤트를 트리거하지 않습니다. 따라서 복수 GEOADD은 여러 이벤트를 생성하지 않습니다.

이 걸릴 :

PubSub 클라이언트 :

SUBSCRIBE [email protected]__:zadd 
1) "subscribe" 
2) "[email protected]__:zadd" 
3) (integer) 1 

일반 클라이언트 : GEOADD users 40.0 73.0 foo

PubSub 클라이언트 :

1) "message" 
2) "[email protected]__:zadd" 
3) "users" 

일반 클라이언트 : GEOADD users 40.0 73.0 foo

PubSub 클라이언트 :)

(nothing) 
+2

... 그리고 원하는 결과를 얻을 수있는 가장 간단한 방법은 키 스페이스 알림을 포기하고 바로 가능 루아 스크립트/W 각각'PUBLISH'와 모든'GEOADD' 번들입니다 –

+0

당신은 단지'멀티 '트랜잭션에서 이것이 괜찮다고 생각합니까? –