The cache API behaviour
get(String.t() | atom()) :: {:ok, any()} | {:ok, false}
remove(list()) :: any()
set(list(), any()) :: {:ok, any()}
set(String.t() | atom(), any()) :: {:ok, any()}
set(list(), (any() -> any()), map()) :: {:ok, any()}