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中文網其他相關文章!