Go 中的 MongoDB:在指定时间后自动让文档过期
在 MongoDB 中,文档可以在指定秒数后自动删除。此功能称为生存时间 (TTL),对于管理不应长期保留的临时数据特别有用。
问题:
实现Go 中的 TTL 需要使用 expireAfterSeconds 选项创建索引。但是,用户可能会遇到插入的文档未按预期过期的情况。
示例代码和问题:
<code class="go">// Sample code to set TTL index and insert documents // May not always expire documents immediately</code>
在上面的示例中,TTL 索引是为“createdAt”字段创建,将其设置为 1 秒后过期文档。但是,即使超过指定的持续时间,插入的文档也可能保持持久性。
解决方案:
文档过期的潜在延迟是由 MongoDB TTL 的异步特性造成的执行。 TTL 进程作为后台任务运行,定期扫描过期文档并删除它们。此任务每 60 秒运行一次。因此,文档在过期后可能会在集合中保留最多 60 秒。此外,在数据库负载较重的情况下,删除操作可能需要更长的时间。
含义:
此行为旨在防止连续删除文档导致性能下降。在应用中使用 TTL 时,考虑这些时序方面非常重要。如果需要立即删除,应探索替代机制。
以上是为什么 Go 中设置了 TTL 过期的 MongoDB 文档并不总是立即删除?的详细内容。更多信息请关注PHP中文网其他相关文章!