【问题标题】:How to specify ">" in redis-py如何在redis-py中指定“>”
【发布时间】:2019-07-03 12:00:50
【问题描述】:

我在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.]]

我错过了什么?为什么我不能指定一个“>”来表示看不见的消息?

【问题讨论】:

    标签: python redis


    【解决方案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)
    

    工作正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      • 2013-02-19
      • 2013-06-04
      • 2022-06-16
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多