"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que meus documentos MongoDB não expiram após 5 segundos com índices TTL no Go?

Por que meus documentos MongoDB não expiram após 5 segundos com índices TTL no Go?

Publicado em 2024-11-07
Navegar:599

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

Usando documentos de expiração do MongoDB após um número especificado de segundos em movimento

Usando índices TTL, o MongoDB permite que você expire documentos automaticamente após um período especificado duração. Este artigo demonstra como fazer isso em Go usando o mongo-go-driver oficial.

Seguindo a documentação do MongoDB, o código mostra como:

  • Criar um índice com expireAfterSeconds opção
  • Inserir dados de amostra com carimbos de data/hora de criação variados

No entanto, o exemplo fornecido está funcionando corretamente e o problema não está relacionado ao código.

Compreendendo o comportamento do índice TTL

O parâmetro expireAfterSeconds especifica a duração após o campo criadoAt quando o documento deve ser considerado expirado. No entanto, a exclusão de documentos expirados não é imediata.

De acordo com a documentação do MongoDB:

"O índice TTL não garante que os dados expirados serão excluídos imediatamente após a expiração. Pode haver um atraso entre o momento em que um documento expira e o momento em que o MongoDB remove o documento do banco de dados."

Tarefa em segundo plano para exclusão

O MongoDB tem uma tarefa em segundo plano que remove documentos expirados a cada 60 segundos. Portanto, os documentos poderão permanecer no acervo por até 60 segundos após expirarem. Além disso, se o banco de dados estiver sob carga pesada, pode levar mais tempo para que todos os documentos expirados sejam excluídos.

Resolução

No seu snippet de código, você espera alguma documentos a serem excluídos após 5 segundos (com base na opção expireAfterSeconds), mas aguarde apenas alguns segundos após a inserção para verificação. Para testar corretamente a funcionalidade, você deve permitir tempo suficiente (vários minutos no mínimo) para que a tarefa em segundo plano seja executada e exclua os documentos expirados.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3