当前位置: 首页 > 知识库问答 >
问题:

如何防止Redis流内存无限增加?

倪阳飇
2023-03-14

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

我以为当所有的消费者组都收到相同的消息时,消息会被Redis-server删除,但似乎不是这样。

因此,Redis流内存无限增加,因为没有消息会被删除。

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

需要一些帮助,谢谢!

共有1个答案

康照
2023-03-14

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

> XDEL mystream 1538561700640-0
(integer) 1

您还可以使用MAXLEN选项对XADD设置任意阈值,或者显式使用XTRIM命令:

> 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"
 类似资料:
  • 我在本地主机上的一个项目中遇到了一个问题,我无法增加PHP内存限制设置。 我已经尝试在php.ini配置中直接增加它: 我尝试在project. htaccess文件中增加它: 我尝试过在PHP控制器的函数中直接增加它:

  • 我一直在尝试增加MAMP(MacOSX)中的php内存限制。我使用的PHP版本是5.4。1.0. 我读过关于为MAMP Pro创建新模板的内容,但我使用的是MAMP的标准版本。 我已经尝试了下面的所有方法,但似乎没有任何效果。任何帮助都将不胜感激。 谢谢你抽出时间。 我已在以下文件中将以下内容从32M更改为128M: /Applications/MAMP/conf/php5.4.10 ; 然后我完

  • 我们有一个在Solaris 10上运行的java进程,为大约200-300个并发用户提供服务。管理员报告说,随着时间的推移,进程使用的内存显著增加。几天内它就达到2GB,并且从未停止增长。 我们已经转储了堆,并使用Eclipse内存探查器对其进行了分析,但没有看到任何异常。堆的大小非常小。 在添加内存统计日志记录后,我们在应用程序中发现管理员使用的“top”实用程序报告的内存使用量与MemoryM

  • 问题内容: 我在共享计算资源的环境中工作,即,我们有几台服务器计算机,每台服务器计算机都配备了一些Nvidia Titan X GPU。 对于中小型模型,Titan X的12 GB通常足以让2-3个人在同一GPU上同时进行训练。如果模型足够小,以至于单个模型无法充分利用GPU的所有计算单元,那么与运行另一个训练过程相比,这实际上可以提高速度。即使在同时访问GPU确实减慢了单个训练时间的情况下,具有

  • 问题内容: 我们知道node.js为我们提供了强大的功能,但强大的功能带来了巨大的责任。 据我所知,V8引擎不进行任何垃圾收集。因此,我们应该避免什么最常见的错误,以确保没有内存从节点服务器泄漏。 编辑: 对不起,V8确实具有强大的垃圾收集器。 问题答案: 据我所知,V8引擎不进行任何垃圾收集。 V8内置了强大而智能的垃圾收集器。 您的主要问题是不了解闭包如何维护对外部函数的范围和上下文的引用。这

  • 我试图从SSRS服务器读取报告,问题是我的内存流不能超过65536字节。 到目前为止,我已经尝试过使用内存流,但尚未成功设置其容量,然后再阅读报告本身 上面的MemoryStream必须在我读取文件之前增加它的容量。 我试过在我的应用程序中玩。配置,但我不知道从哪里开始设置内存流的字节容量