我正在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.]]
我想念什么?为什么我不能指定“>”来指示看不见的消息?
答案 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)
工作正常。