python - 如何在redis-py中指定“>”
问题描述
我在redis 流文档中查看这个,它说:
是时候尝试使用消费者组阅读内容了:
> 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 从流中读取数据,并且我是消费者 Alice。每次消费者对消费者组执行操作时,它必须指定其名称以在组内唯一标识该消费者。
上面的命令行中还有一个非常重要的细节,在强制 STREAMS 选项之后,为密钥 mystream 请求的 ID 是特殊 ID >。这个特殊的 ID 只在消费者组的上下文中有效,它意味着:消息从未传递给其他消费者。
我正在尝试在 redis-py 中指定“>”参数。
当我在这里查看文档时,我在流中看不到任何似乎让我这样做的参数。具体来说,我正在尝试:
>>> r.xreadgroup(mygroupname,myconsumer,{mystream : ">"},1)
[] # oh no, empty. WHY?!
#
# even though
>>> r.xread({mystream: '1561950326849-0'}, count=1)
[[b'stuff-returned-successfully.]]
我错过了什么?为什么我不能指定一个“>”来表示看不见的消息?
解决方案
您在这个问题中有一个错误的假设,即您有 /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)
工作正常。
推荐阅读
- flutter - 我有一个带有滚动表单的部分,但滚动无法正常工作
- date - 让 CakePHP 3 以 yyyy-mm-dd 格式输出日期
- javascript - 如何遍历jquery数组中提供的变量变量?
- c# - WPF C#如何检查URI文件是否存在
- sql - 如何在 PyCharm 中突出显示 SQL
- javascript - 在交叉链接函数中保存嵌套级别
- docker - 我正在尝试配置traefik + docker,但是浏览器永远加载https url,你知道为什么吗?
- python - 不确定对 in list2=i[:4] Python 3++ 的理解
- javascript - setState 的顺序
- reactjs - Redux Offline 问题,将reducer 重新水化为null