如何防止redis流内存无限增长?

cetgtptt  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(336)

我刚刚意识到,当只有一个用户组存在时,xack不会自动删除消息。
我以为当所有的消费群都确认了同一条消息时,redis服务器会删除该消息,但似乎不是这样。
因此,redis流内存无限增加,因为没有消息会被删除。
也许防止这种情况的唯一方法是手动xdel消息?但我怎么知道所有的消费者群体都接受了这个信息呢?
需要帮助,谢谢!

ncgqoxb0

ncgqoxb01#

redis流主要是一种只附加的数据结构。所有消息都无限期地附加到流中,除非用户明确要求删除它们,例如使用 XDEL 命令:

> XDEL mystream 1538561700640-0
(integer) 1

还可以使用 MAXLEN 选择 XADD :

> 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"

相关问题