如何在redis-py

时间:2019-07-01 03:34:12

标签: python redis

我正在redis stream documentation中查看,它表示:

  

是时候尝试使用消费者组来阅读一些东西了:

> XREADGROUP GROUP mygroup Alice COUNT 1 STREAMS mystream >
1) 1) "mystream"
   2) 1) 1) 1526569495631-0
         2) 1) "message"
            2) "apple"
     

XREADGROUP答复就像XREAD答复一样。但是请注意GROUP     以上提供,它表明我想   使用消费者组mygroup从流中读取信息,我是   消费者爱丽丝。消费者每次使用   消费者组,它必须指定其名称以唯一标识   组内的消费者。

     

上面的命令行中还有一个非常重要的细节,   在强制性STREAMS选项之后,请求密钥的ID   mystream是特殊ID>。此特殊ID仅在   消费者群体的上下文,这意味着:消息从未传递到   到目前为止还有其他消费者。

我正在尝试在redis-py中指定“>”参数。

当我查看文档here时,在流中看不到任何可以让我执行此操作的参数。具体来说,我正在尝试:

>>> r.xreadgroup(mygroupname,myconsumer,{mystream : ">"},1)
[] # oh no, empty. WHY?!
# 
# even though
>>> r.xread({mystream: '1561950326849-0'}, count=1)
[[b'stuff-returned-successfully.]]

我想念什么?为什么我不能指定“>”来指示看不见的消息?

1 个答案:

答案 0 :(得分:1)

您在此问题中的一个错误假设是您收到了/ unseen /消息。该命令应该起作用,但是如果您已经看过所有消息一次就不会起作用。

尝试

# make sure you have not seen anything in your stream by resetting last seen to 0
>>> r.xgroup_setid(mystream,mygroupname,0) # RESET ALL

现在

r.xreadgroup(mygroupname,myconsumer,{mystream : ">"},1)

工作正常。