Packages

KV cache with TTL, Replacement and Persistence support

Current section

Files

Jump to
mem lib mem storages ets ttl.ex
Raw

lib/mem/storages/ets/ttl.ex

defmodule Mem.Storages.ETS.TTL do
defmacro __using__(_) do
quote do
@name :"#{__MODULE__}.ETS"
def create do
:ets.new(@name, [:set, :public, :named_table, :compressed, write_concurrency: true])
end
def memory_used do
:ets.info(@name, :memory)
end
def get(key) do
case :ets.lookup(@name, key) do
[{^key, value}] -> {:ok, value}
[] -> {:err, nil}
end
end
def set(key, value) do
:ets.insert(@name, {key, value})
end
def del(key) do
:ets.delete(@name, key)
end
def flush do
:ets.delete_all_objects(@name)
end
def first do
:ets.first(@name)
end
def next(key) do
:ets.next(@name, key)
end
end
end
end