UNS*_*BLE 6 redis redis-streams
我刚刚意识到当只有一个消费者组时 XACK 不会自动删除消息。
我以为当所有消费者组确认同一条消息时,该消息将被 Redis-server 删除,但似乎并非如此。
因此,Redis 流内存会无限增加,因为不会删除任何消息。
也许防止这种情况的唯一方法是手动 XDEL 消息?但是我怎么知道所有的消费者组都确认了这个消息呢?
需要一些帮助,谢谢!
Redis 流主要是一种仅附加的数据结构。可以使用以下XDEL命令删除条目,但这不一定会释放该条目使用的内存:
> XDEL mystream 1538561700640-0
(integer) 1
Run Code Online (Sandbox Code Playgroud)
您还可以使用选项或显式使用命令以任意阈值限制流:MAXLENXADDXTRIM
> XADD mystream MAXLEN 1000 * value 1
1526654998691-0
...
> XLEN mystream
(integer) 1000
Run Code Online (Sandbox Code Playgroud)
但我怎么知道所有消费者组都已经确认了该消息呢?
您可以使用以下命令检查每个消费者组的待处理消息列表XPENDING:
> XPENDING mystream mygroup
1) (integer) 1
2) 1526984818136-0
3) 1526984818136-0
4) 1) 1) "consumer-1"
2) "1"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1150 次 |
| 最近记录: |