«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему срок действия моих документов MongoDB не истекает через 5 секунд с индексами TTL в Go?

Почему срок действия моих документов MongoDB не истекает через 5 секунд с индексами TTL в Go?

Опубликовано 7 ноября 2024 г.
Просматривать:596

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

Использование документов MongoDB со сроком действия после указанного количества секунд в Go

Используя индексы TTL, MongoDB позволяет автоматически истечь срок действия документов после указанного продолжительность. В этой статье показано, как добиться этого в Go с помощью официального драйвера mongo-go-driver.

В соответствии с документацией MongoDB код показывает, как:

  • Создать индекс с expireAfterSeconds option
  • Вставить образцы данных с разными временными метками создания

Однако предоставленный пример работает правильно, и проблема не связана с кодом.

Понимание поведения индекса TTL

Параметр expireAfterSeconds указывает продолжительность после поля createAt, в течение которой документ следует считать истекшим. Однако удаление документов с истекшим сроком действия не происходит немедленно.

Согласно документации MongoDB:

"Индекс TTL не гарантирует, что данные с истекшим сроком действия будут удалены сразу после истечения срока действия. Возможна задержка между временем истечения срока действия документа и временем, когда MongoDB удаляет документ из базы данных."

Фоновая задача для удаления

MongoDB имеет фоновую задачу, которая удаляет документы с истекшим сроком действия каждые 60 секунд. Таким образом, документы могут оставаться в коллекции до 60 секунд после истечения срока их действия. Кроме того, если база данных испытывает большую нагрузку, удаление всех документов с истекшим сроком действия может занять дополнительное время.

Решение

В фрагменте кода вы ожидаете, что некоторые документы должны быть удалены через 5 секунд (на основе опции expireAfterSeconds), но ждут только несколько секунд после вставки для проверки. Чтобы правильно протестировать функциональность, вы должны предоставить достаточно времени (минимум несколько минут) для запуска фоновой задачи и удаления документов с истекшим сроком действия.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3