我有一个非常基本的Redis pubsub问题,我想return terms.debounceTime(400)
.distinctUntilChanged()
.switchMap(term => {
if(term){
this.searchEntries(term);
}
});
}
通过PSUBSCRIBE
命令添加的项目。这就是我所做的:
首先运行GEOADD
命令。
然后在一个新的控制台中我也跑了:
MONITOR
然后在我发布的另一个PSUBSCRIBE __geo:*
会话中:
redis-cli
订阅者没有任何内容,但我可以确认该项目是通过MONITOR添加的。
答案 0 :(得分:2)
3件事:
1)确保密钥空间事件具有正确的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
。此外,键空间事件的格式也略有不同。您想要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)