Heim  >  Artikel  >  Backend-Entwicklung  >  Warum laufen meine MongoDB-Dokumente mit TTL-Indizes in Go nicht nach 5 Sekunden ab?

Warum laufen meine MongoDB-Dokumente mit TTL-Indizes in Go nicht nach 5 Sekunden ab?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-30 21:50:30990Durchsuche

Why Aren't My MongoDB Documents Expiring After 5 Seconds with TTL Indexes in Go?

Mit MongoDB lassen Dokumente nach einer bestimmten Anzahl von Sekunden in Go ablaufen

Mithilfe von TTL-Indizes können Sie mit MongoDB Dokumente nach einer bestimmten Anzahl von Sekunden automatisch ablaufen lassen Dauer. Dieser Artikel zeigt, wie Sie dies in Go mit dem offiziellen Mongo-Go-Treiber erreichen.

Im Anschluss an die MongoDB-Dokumentation zeigt der Code, wie Sie:

  • einen Index mit einem ExpireAfterSeconds erstellen Option
  • Beispieldaten mit unterschiedlichen Erstellungszeitstempeln einfügen

Das bereitgestellte Beispiel funktioniert jedoch ordnungsgemäß und das Problem hängt nicht mit dem Code zusammen.

Grundlegendes zum TTL-Indexverhalten

Der Parameter „expireAfterSeconds“ gibt die Dauer nach dem Feld „createdAt“ an, nach der das Dokument als abgelaufen betrachtet werden soll. Die Löschung abgelaufener Dokumente erfolgt jedoch nicht sofort.

Laut MongoDB-Dokumentation:

„Der TTL-Index garantiert nicht, dass abgelaufene Daten sofort nach Ablauf gelöscht werden. Es kann zu einer Verzögerung kommen.“ zwischen dem Zeitpunkt, zu dem ein Dokument abläuft, und dem Zeitpunkt, zu dem MongoDB das Dokument aus der Datenbank entfernt.“

Hintergrundaufgabe zum Löschen

MongoDB verfügt über eine Hintergrundaufgabe, die abgelaufene Dokumente entfernt alle 60 Sekunden. Daher können Dokumente nach Ablauf bis zu 60 Sekunden in der Sammlung verbleiben. Wenn die Datenbank außerdem stark ausgelastet ist, kann es zusätzliche Zeit dauern, bis alle abgelaufenen Dokumente gelöscht sind.

Lösung

In Ihrem Code-Snippet erwarten Sie einige Dokumente werden nach 5 Sekunden gelöscht (basierend auf der Option „expireAfterSeconds“), warten jedoch nur Sekunden nach dem Einfügen auf die Überprüfung. Um die Funktionalität korrekt zu testen, sollten Sie ausreichend Zeit (mindestens mehrere Minuten) einplanen, damit die Hintergrundaufgabe ausgeführt und die abgelaufenen Dokumente gelöscht werden kann.

Das obige ist der detaillierte Inhalt vonWarum laufen meine MongoDB-Dokumente mit TTL-Indizes in Go nicht nach 5 Sekunden ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn