"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-07
Parcourir:546

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 dans 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 à l'aide du 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 de 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 soumise à une charge importante, 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3