订阅键空间通知的麻烦



我有一个由公牛管理的redis列表。我想用不同的过程来监控这个列表的长度。我是redis的新手,所以虽然我认为我已经找到了"正确"的方法来做这件事,但我遇到了问题。

从一个小的研究,我了解到Redis有按键空间通知从2.8.0开始,他们听起来很合适。

在我继续之前,我只想确认我已经启用了keyspace事件:

127.0.0.1:6379> CONFIG GET notify-keyspace-events
1) "notify-keyspace-events"
2) "AKE"

同时,根据INFO,我认为我在数据库0上:

# Keyspace
db0:keys=315,expires=0,avg_ttl=0

说到这里:我订阅我想要的频道有问题。该模块在键下创建和管理列表:'公牛:测试队列:等待',因此根据键空间通知的文档,我的理解是我应该做以下事情来收听推送和弹出事件。

  1. SUBSCRIBE "__keyspace:0__:bull:Test Queue:wait rpush"
  2. SUBSCRIBE "__keyspace:0__:bull:Test Queue:wait lpush"
  3. SUBSCRIBE "__keyspace:0__:bull:Test Queue:wait rpop"
  4. SUBSCRIBE "__keyspace:0__:bull:Test Queue:wait lpop"

如果我运行1。在一个进程中,然后在另一个进程中执行:

RPUSH "bull:Test Queue:wait" 222

那么订阅就不会收到消息。奇怪的是,如果我使用PSUBSCRIBE并收听"__keyspace:0__:bull:Test Queue:wait*",那么它会正确地触发。但我不是在寻找所有事件,只是推搡和弹出。所以这不是我想要的。

如果有人能告诉我我做错了什么,我将不胜感激。

感谢您的宝贵时间。

我误解了文档。

通道为__keyspace:0__:bull:Test Queue:wait,消息为rpushlpush等。或者,通道可以是:__keyspace:0__:rpush,消息可以是bull:Test Queue:wait

感谢Jan-Erik Rediger在讨论区帮助我。

最新更新