A very simple cache. It uses timers for the ttl and ets for the storage. No locks are used and there is a fix to prevent thundering herd issues when the cache is warm and pre-emptively refresh the cache (it triggers in low ttl left of item situations). There is also a thundering herd fix for when the cache is cold using a sentinel key and a sleep. Mostly wrapper around ets and kept very simple by using newer apis and recent erlang improvements.
Using property model testing and property tests to verify the cache via propcheck.
available in Hex, the package can be installed
by adding simpler_cache
to your list of dependencies in mix.exs
:
def deps do
[
{:simpler_cache, "~> 0.1.8"}
]
end
- Sample configs
config :simpler_cache,
cache_name: :simpler_cache_test,
global_ttl_ms: 100_000