如何真正从redis流中删除条目?

问题描述 投票:0回答:1

我想从redis流中删除特定条目,但文档说XDEL仅将条目标记为已删除,内存并未释放。当宏节点中的所有条目都被标记为已删除时,它们才真正被删除。那么,我该如何真正从redis流中删除条目,同时释放内存呢?我使用的是redis 6.2.6,谢谢。

我试图通过XDEL删除条目,但我不知道如何验证它们是否真的被删除。

redis stream
1个回答
1
投票

XDEL不会做你想做的事。这不是它所做的事情。如果您认为应该,您可以随时在 https://github.com/redis/redis/issues 提出请求该功能的问题。当然,这并不能保证,而且这也不完全是解决您问题的最快方法。 😉

我会说我原则上同意 for_stack 的评论,这不应该是一个大问题。但你最了解自己的需求。也许您正在一个非常有限的内存环境中工作,例如某种边缘或物联网事物。或者也许有您必须遵守的监管或安全要求。

所以,这是一个可能的解决方案。如果您要删除的节点位于流的底部(即最旧的),您可以使用 XTRIM 代替。它可以选择删除大约数量的条目(保持宏节点完整)或删除确切数量并相应地调整宏节点。

删除确切的金额是默认行为。

redis.cloud> XTRIM key MAXLEN 1000
redis.cloud> XTRIM key MINID 132456-2

我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.