Поскольку у mnesia нет никакого механизма ttl (по крайней мере, я не смог его найти), я написал сервер gen, который удаляет все записи из mnesia старше 1 часа.Этот сервер gen активируется каждые 1 час, удаляет старые записи и возвращается в спящий режим.Вот фрагмент кода логики
{:atomic, list} =
:mnesia.transaction(fn ->
:mnesia.select(Table_Name, [
{{Table_Name, :"$1", :"$2", :"$3", :"$4", :"$5", :"$6", :"$7", :"$8", :"$9", :"$10"},
[{:<, :"$3", cutoff_time}], [:"$$"]}
])
end)
for record <- list do
[id, _, _, _, _, _, _, _, _, _] = record
:mnesia.dirty_delete(Table_Name, id)
end
Примечание. Каждая запись в таблице имеет 10 полей, а первое поле (id) является ключом.Параметр $ 3 - это отметка времени, а время отключения = текущая отметка времени - 1 час