Mit*_*ops 5 redis redis-streams
我知道我可以使用xlen或获得流的总长度xinfo stream mystream full.
我也明白我可以xpending用来获取待处理队列的长度,还没有被确认的项目。
是否有命令可以告诉我 / 已经 / 被ack“删除”的项目的数量或身份?(除了假设xlen- len(xpending)= len(unackd)?)
尽管您可以使用 LUA 脚本和 MULTI 来完成此操作,但没有内置功能可以对流中的确认/已处理消息进行计数。
您可以使用 LUA 脚本在同一流程中进行计数和 ACK。
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] )
Run Code Online (Sandbox Code Playgroud)
my-stream是流名称,my-group是消费者组名称。
您还可以使用 Multi/Exec
MULTI
XACK {my-stream} my-group message-id
INCR {my-stream}::my-group::counter
EXEC
Run Code Online (Sandbox Code Playgroud)
我已经标记了计数器和流名称,以避免 Redis 集群中出现跨槽错误。为每个消费者组和每个流维护计数器。
| 归档时间: |
|
| 查看次数: |
567 次 |
| 最近记录: |