我刚刚意识到,当只有一个用户组存在时,xack不会自动删除消息。我以为当所有的消费群都确认了同一条消息时,redis服务器会删除该消息,但似乎不是这样。因此,redis流内存无限增加,因为没有消息会被删除。也许防止这种情况的唯一方法是手动xdel消息?但我怎么知道所有的消费者群体都接受了这个信息呢?需要帮助,谢谢!
ncgqoxb01#
redis流主要是一种只附加的数据结构。所有消息都无限期地附加到流中,除非用户明确要求删除它们,例如使用 XDEL 命令:
XDEL
> XDEL mystream 1538561700640-0 (integer) 1
还可以使用 MAXLEN 选择 XADD :
MAXLEN
XADD
> XADD mystream MAXLEN 1000 * value 1 1526654998691-0 ... > XLEN mystream (integer) 1000
要检查每个使用者组的挂起消息列表,可以使用 XPENDING 命令:
XPENDING
> XPENDING mystream mygroup 1) (integer) 1 2) 1526984818136-0 3) 1526984818136-0 4) 1) 1) "consumer-1" 2) "1"
1条答案
按热度按时间ncgqoxb01#
redis流主要是一种只附加的数据结构。所有消息都无限期地附加到流中,除非用户明确要求删除它们,例如使用
XDEL
命令:还可以使用
MAXLEN
选择XADD
:要检查每个使用者组的挂起消息列表,可以使用
XPENDING
命令: