Behaviour for the storage backend for various rules.
Time of milliseconds since unix epoch
key() :: term
opts() :: term
time() :: non_neg_integer
Time of milliseconds since unix epoch.
increment(opts, key, inc :: integer, expires_at :: time) :: integer
read(opts, key, now :: time) :: {:ok, term} | :error
read_sliding_counter(opts, key, now :: time) :: non_neg_integer
write(opts, key, value :: term, expires_at :: time) :: :ok
write_sliding_counter(opts, key, now :: time, expires_at :: time) :: :ok