8

我刚刚意识到只有一个消费者组存在时,XACK 不会自动删除消息。

我以为当所有消费者组都确认相同的消息时,该消息将被 Redis-server 删除,但似乎并非如此。

因此,Redis 流内存无限增加,因为不会删除任何消息。

也许防止这种情况的唯一方法是手动 XDEL 消息?但是我怎么知道所有的消费者群体都已经确认了这个消息呢?

需要帮助,谢谢!

4

1 回答 1

7

Redis 流主要是一种仅附加的数据结构。可以使用该XDEL命令删除条目,但这并不一定会释放条目使用的内存:

> XDEL mystream 1538561700640-0
(integer) 1

您还可以使用to 选项或显式使用命令以任意阈值限制流:MAXLENXADDXTRIM

> XADD mystream MAXLEN 1000 * value 1
1526654998691-0
...
> XLEN mystream
(integer) 1000

但是我怎么知道所有的消费者群体都已经确认了这个消息呢?

XPENDING您可以使用以下命令检查每个消费者组的待处理消息列表:

> XPENDING mystream mygroup
1) (integer) 1
2) 1526984818136-0
3) 1526984818136-0
4) 1) 1) "consumer-1"
      2) "1"
于 2020-03-01T12:31:07.153 回答