我有一个相当基本的redis pubsub问题,我想PSUBSCRIBE到通过GEOADD命令添加的项。以下是我所做的:
首先运行MONITOR命令。
然后在一个新的控制台中,我还运行:

PSUBSCRIBE __geo:*

然后在我发布的另一个redis-cli会话中:
GEOADD users 40.0 -73.0 foo

订阅者什么都没有,但我可以确认这个项目是通过监视器添加的。

最佳答案

三件事:
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。另外,keyspace事件的格式有点不同。您需要执行SUBSCRIBE __keyevent@0__:zadd来监听GEOADD命令。
3)由于geo*和z*命令实际上是设置的,因此不触发写入的命令不会触发keyevent。因此,multipleGEOADD不会产生多个事件。
拿着这个:
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)

关于redis - PSUBSCRIBE和GEOADD,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47914809/

10-15 09:35