Implementação do Store behaviour usando ETS com TTL.
Cada entrada é armazenada como {key, value, expires_at}, onde
expires_at pode ser:
- um inteiro (monotonic ms) — a entrada expira nesse instante
:infinity— a entrada nunca expira (usada por embeddings LightGCN)
Entradas com TTL numérico expirado são ignoradas na leitura e removidas
pelo CacheCleaner. Entradas :infinity só saem do store via delete/2,
clear/1 ou substituição com put/4.
Summary
Functions
Returns a specification to start this module under a supervisor.
Remove todas as entradas expiradas. Chamado pelo plugin CacheCleaner.
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec clean_expired(MeliGraph.Config.t()) :: non_neg_integer()
Remove todas as entradas expiradas. Chamado pelo plugin CacheCleaner.
Entradas com TTL :infinity são preservadas — o guard is_integer/1
no match spec garante que apenas timestamps numéricos sejam comparados.