问题描述
我知道我可以使用xlen
或xinfo 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 集群中的跨槽错误。为每个消费者组和每个流维护计数器。