计算或列出Redis流中所有已确认的消息

问题描述

我知道我可以使用xlenxinfo stream mystream full.

来获得流的总长度

我还了解到,我可以使用xpending获取待处理队列(尚未确认的项目)的长度。

是否有命令向我提供已经拥有ack的商品的数量或身份? (除了假设xlen-len(xpending) = len(unackd)之外?)

解决方法

虽然您可以使用 LUA 脚本和 MULTI 来完成此操作,但没有内置功能来计算流中的确认/已处理消息。

您可以使用 LUA 脚本在同一个流中进行计数和确认。

<button class="button" v-for="app in list.selected" :key="app.order">

ARGS: [my-group,message-id] Keys: [{my-stream},{my-stream}::my-group::counter ] redis.call( 'XACK',KEYS[0],ARGS[0],ARGS[1] ) redis.call('INCR',KEYS[1] ) 是流名称,my-stream 是使用者组名称。

您也可以使用 Multi/Exec

my-group

我已标记计数器和流名称以避免 Redis 集群中的跨槽错误。为每个消费者组和每个流维护计数器。