订阅密钥空间通知时遇到问题

时间:2014-06-23 02:53:07

标签: node.js redis node-redis

我有一个由bull管理的redis列表。我想监视这个列表的长度是一个不同的过程。我是redis的新手,所以当我认为我找到了“正确”的方法时,我遇到了问题。

从一个小小的研究中我认为Redis从2.8.0开始就有Keyspace Notifications,听起来很合适。

在我走得更远之前,我只想确认我启用了密钥空间事件:

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

解决了这个问题:我在订阅我想要的频道时遇到了麻烦。该模块在密钥下创建并管理一个列表:'bull:Test Queue:wait',因此根据密钥空间通知的文档,我的理解是我应该执行以下操作来监听推送和弹出事件。

  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"
  5. 如果我在一个进程中运行1.然后在另一个进程中执行:

    RPUSH "bull:Test Queue:wait" 222
    

    然后订阅不会收到消息。奇怪的是,如果我使用PSUBSCRIBE并听取"__keyspace:0__:bull:Test Queue:wait*",则 会适当地触发。但我不是在寻找所有事件,只是推动和弹出。所以这不是我想要的。

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

    感谢您的时间。

1 个答案:

答案 0 :(得分:0)

我误解了文档。

频道为__keyspace:0__:bull:Test Queue:wait,邮件为rpushlpush等。或者,频道可以为:__keyspace:0__:rpush,邮件为bull:Test Queue:wait }。

感谢Jan-Erik Rediger helped me out on the discussion board