如何在redis stream中获得消费者群体的滞后量?

egdjgwm8  于 2023-02-03  发布在  Redis
关注(0)|答案(2)|浏览(153)

假设我有一个流mystream和一个组mygroup,我如何获得未使用消息的长度?

aij0ehis

aij0ehis1#

不,那是不可能的。
可以分别使用XINFO GROUPS and XINFO STREAM命令获取组和流中传递的最后一条消息ID。
然而,没有返回流子范围长度的命令,如果存在这样的命令,可能需要线性时间复杂度,在这种情况下,它可能不会被实现。

bf1o4zei

bf1o4zei2#

使用XINFO GROUPS

命令XINFO GROUPS mygroup将在响应中为滞后提供一个字段。
根据文件:
lag:流中仍在等待交付给组的消费者的条目数,如果无法确定该数目,则为NULL。
如果您想知道为什么lag可以为null:
在两种特殊情况下,此机制无法报告滞后:

  • 使用者组被创建或设置为具有任意的最后传送的ID(分别为XGROUP CREATE和XGROUP SETID命令)。任意ID是不是流的第一个条目、最后一个条目的ID或零("0 - 0")ID的任何ID。
  • 组的last-delivered-id和流的last-generated-id之间的一个或多个条目被删除(使用XDEL或修整操作)。

在这两种情况下,组的读取计数器都被视为无效,返回值被设置为NULL,以表示延迟当前不可用。
更多详细信息,请访问https://redis.io/commands/xinfo-groups/

相关问题