PSUBSCRIBE和GEOADD

时间:2017-12-20 21:47:10

标签: redis

我有一个非常基本的Redis pubsub问题,我想return terms.debounceTime(400) .distinctUntilChanged() .switchMap(term => { if(term){ this.searchEntries(term); } }); } 通过PSUBSCRIBE命令添加的项目。这就是我所做的:

首先运行GEOADD命令。

然后在一个新的控制台中我也跑了:

MONITOR

然后在我发布的另一个PSUBSCRIBE __geo:* 会话中:

redis-cli

订阅者没有任何内容,但我可以确认该项目是通过MONITOR添加的。

1 个答案:

答案 0 :(得分:2)

3件事:

1)确保密钥空间事件具有正确的CONFIG SETCONFIG SET notify-keyspace-events AKE将获得可以进行调试的所有内容,但您很可能只需要CONFIG SET notify-keyspace-events zE用于您的用例。

2)所有Redis GEO *命令实际上都是just a version of a sorted set。他们没有自己的通知。 GEOADD实际上会在keyevents消息中显示ZADD。此外,键空间事件的格式也略有不同。您想要SUBSCRIBE __keyevent@0__:zadd来监听GEOADD命令。

3)由于GEO *和Z *命令实际上是 sets ,因此不会触发写入的命令不会触发关键事件。因此,多个GEOADD不会产生多个事件。

拿这个:

PubSub客户端:

SUBSCRIBE __keyevent@0__:zadd
1) "subscribe"
2) "__keyevent@0__:zadd"
3) (integer) 1

普通客户:GEOADD users 40.0 73.0 foo

PubSub客户端:

1) "message"
2) "__keyevent@0__:zadd"
3) "users"

普通客户:GEOADD users 40.0 73.0 foo

PubSub客户端:

 (nothing)