4

我在 Messenger 中使用 redis 作为传输,我认为在处理流程后删除是自动的,但可惜不是。处理成功后,我不知道如何删除重复流。

我使用 symfony 4.4.latest 和 redis server 6.0

谢谢

4

2 回答 2

3

方法是使用XTRIM命令。

您可以称您处理几条消息,您修剪流以仅保留未处理的消息。通过调用XLEN,您可以获得流大小,如果减去您处理的消息量,您应该为 XTRIM 留下正确的参数。

于 2020-05-14T14:21:12.943 回答
0

简单的步骤:

  1. 读取流消息并保留其 ID。
  2. 处理完消息后,使用XDEL 命令从 redis 流中删除特定条目。

顺便说一句,不应该像这样使用 redis 流,最好使用 @Dudo 提到的 pub/sub 功能。这是对 redis 流的一个很好的介绍:https ://redis.io/topics/streams-intro

于 2021-05-24T05:27:27.740 回答