gpt4 book ai didi

java - Couchbase - 根据 TTL 删除旧文档

转载 作者:行者123 更新时间:2023-11-30 07:18:01 24 4
gpt4 key购买 nike

我有一个沙发底座桶,里面有许多文档。一段时间以来,我发现这些文档正在迅速占用大量的存储空间。我现在正在为所有将要存储的新文档设置 TTL。有没有办法为所有现有文档设置 TTL 或根据过期时间删除现有文档?不同的文档根据文档类型的不同,其过期时间也不同(从15分钟到1个月不等)。请问您能建议我可以使用的方法吗?

最佳答案

您可以在文档上设置过期时间,然后更新该文档。当然,您必须检查所有文档并为每个文档设置到期日。

我不知道如何在 Java 中执行此操作,但它可能类似于 .NET:

// get the document into a variable named 'doc', then
doc.Expiry = 123;
_bucket.Update(doc);

如果您只有一些众所周知的文档,那么这应该很容易。

您还可以使用 N1QL 查询根据到期时间检索文档。 See this blog post for more information ,但要点是这样的查询:

SELECT META(default).id, *
FROM default
WHERE DATE_DIFF_STR(STR_TO_UTC(exp_datetime),MILLIS_TO_UTC(DATE_ADD_MILLIS(NOW_MILLIS(),30,"second")),"second") < 30
AND STR_TO_UTC(exp_datetime) IS NOT MISSING;

这将选择将在 30 秒内过期的文档。因此,您可以编写一个使用 WHERE 子句的 N1QL DELETE 查询。

更新:Couchbase 的一位同事向我指出 issue MB-16242 。您还无法使用 N1QL UPDATE 设置过期时间。。但正如我上面所说,您可以根据到期时间选择/删除文档。

关于java - Couchbase - 根据 TTL 删除旧文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38056490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com