我订阅Redis数据库时如何知道通知消息的操作?

时间:2018-11-13 09:09:03

标签: redis redis-py

我正在使用redis-py。我订阅了redis数据库并阅读如下通知:

>>> p.psubscribe("__keyspace@{}__:*".format(...))
>>> for message in p.listen():
...     # do something with the message

我想获取消息的操作,例如DELETE或ADD,该怎么办?

谢谢〜

1 个答案:

答案 0 :(得分:0)

根据文档(https://github.com/andymccurdy/redis-py#publish--subscribe),调用listen()时,message作为字典返回:

  
      
  • 类型:以下之一:'subscribe','unsubscribe','psubscribe','punsubscribe','message','pmessage'
  •   
  • 频道:[取消]订阅的频道或消息发布到的频道
  •   
  • 模式:与已发布消息的频道匹配的模式。除“ pmessage”类型外,在所有情况下均为“无”。
  •   
  • data:消息数据。对于[un] subscribe消息,此值将是该连接当前订阅的通道和模式的数量。对于[p]条消息,此值将是实际发布的消息。
  •   

对于'__keyspace *'模式,data字典中的message键保存操作的名称。换句话说:

>>> p.psubscribe("__keyspace@{}__:*")
>>> for message in p.listen():
...     print(message['data'])  # print the operation

注意:您的示例中似乎不需要调用format(...)