Maison > développement back-end > Golang > Pourquoi mes documents MongoDB n'expirent-ils pas après 5 secondes avec les index TTL dans Go ?

Pourquoi mes documents MongoDB n'expirent-ils pas après 5 secondes avec les index TTL dans Go ?

Mary-Kate Olsen
Libérer: 2024-10-30 21:50:30
original
1074 Les gens l'ont consulté

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

À l'aide de MongoDB, faire expirer les documents après un nombre spécifié de secondes en Go

À l'aide des index TTL, MongoDB vous permet d'expirer automatiquement les documents après un délai spécifié durée. Cet article montre comment y parvenir dans Go en utilisant le pilote mongo-go-driver officiel.

Suite à la documentation MongoDB, le code montre comment :

  • Créer un index avec un expireAfterSeconds option
  • Insérer des exemples de données avec des horodatages de création variables

Cependant, l'exemple fourni fonctionne correctement et le problème n'est pas lié au code.

Comprendre le comportement de l'index TTL

Le paramètre expireAfterSeconds spécifie la durée après le champ crééAt pendant laquelle le document doit être considéré comme expiré. Cependant, la suppression des documents expirés n'est pas immédiate.

Selon la documentation MongoDB :

"L'index TTL ne garantit pas que les données expirées seront supprimées immédiatement après l'expiration. Il peut y avoir un délai entre le moment où un document expire et le moment où MongoDB supprime le document de la base de données. "

Tâche en arrière-plan pour la suppression

MongoDB a une tâche en arrière-plan qui supprime les documents expirés toutes les 60 secondes. Par conséquent, les documents peuvent rester dans la collection jusqu'à 60 secondes après leur expiration. De plus, si la base de données est fortement sollicitée, la suppression de tous les documents expirés peut prendre un certain temps.

Résolution

Dans votre extrait de code, vous vous attendez à ce que certains les documents doivent être supprimés après 5 secondes (en fonction de l'option expireAfterSeconds) mais n'attendent que quelques secondes après l'insertion pour vérification. Pour tester correctement la fonctionnalité, vous devez prévoir suffisamment de temps (plusieurs minutes au minimum) pour que la tâche en arrière-plan s'exécute et supprime les documents expirés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal