我有一个相当基本的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/