View Source depcache (depcache v2.0.0)
Depcache API
depcache API
flush/1
, flush/2
, get/2
, get/3
, get_subkey/3
, get_wait/2
, set/3
, set/4
, set/5
, size/1
memo/2
, memo/3
, memo/4
, memo/5
flush_process_dict/0
, in_process/1
, in_process_server/1
Internal
cleanup/1
, cleanup/5
Summary
Functions
See also:gen_server:call/2.
See also:gen_server:call/2.
undefined
if not found (or not valid).See also:gen_server:call/2.
undefined
if not found (or not valid)See also:gen_server:call/2.
undefined
if not found (or not valid)See also:gen_server:call/2.
See also:gen_server:call/3.
MaxAge
seconds.Equivalent to memo(Fun, Key, MaxAge, [], Server).
MaxAge
seconds, flush the cached result if any of the dependencies is changed.Equivalent to set(Key, Data, 3600, [], Server).
Equivalent to set(Key, Data, MaxAge, [], Server).
MaxAge
seconds and check the dependencies.Start a depcache process.
See also:gen_server:start_link/3.
Start a named depcache process.
See also:gen_server:start_link/4.
Types
-type callback() :: mfargs().
-type cleanup_state() :: #cleanup_state{pid :: pid(), tables :: tables(), name :: atom(), memory_max :: non_neg_integer(), callback :: callback() | undefined}.
-type config() :: config_map() | config_proplist().
-type config_map() :: #{memory_max => non_neg_integer() | undefined, callback => callback() | undefined}.
-type config_proplist() :: [{memory_max, non_neg_integer | undefined} | {callback, callback() | undefined}].
-type depend() :: #depend{key :: key(), serial :: non_neg_integer()}.
-type dependencies() :: [key()].
-type key() :: any().
-type max_age_secs() :: sec().
-type meta() :: #meta{key :: key(), expire :: sec(), serial :: non_neg_integer(), depend :: dependencies()}.
-type proplist() :: proplists:proplist().
-type sec() :: non_neg_integer().
-type state() :: #state{now :: sec(), serial :: non_neg_integer(), tables :: tables(), wait_pids :: map(), writers :: map()}.
Functions
-spec cleanup(CleanUp_state) -> Result when CleanUp_state :: cleanup_state(), Result :: no_return().
Equivalent to cleanup(CleanUp_state, SlotNr, Now, Mode, Ct).
Cleanup process for the depcache. Periodically checks a batch of depcache items for their validity. Asks the depcache server to delete invalidated items. When the load of the data table is too high then This cleanup process starts to delete random entries. By using a random delete we don't need to keep a LRU list, which is a bit expensive.-spec cleanup(State, SlotNr, Now, Mode, Ct) -> Result when State :: cleanup_state(), SlotNr :: '$end_of_table' | non_neg_integer(), Now :: sec(), Mode :: normal | cache_full, Ct :: integer(), Result :: no_return().
-spec flush(Server) -> Result when Server :: depcache_server(), Result :: ok.
See also:gen_server:call/2.
-spec flush(Key, Server) -> Result when Key :: key(), Server :: depcache_server(), Result :: ok.
See also:gen_server:call/2.
-spec flush_process_dict() -> Result when Result :: ok.
-spec get(Key, Server) -> Result when Key :: key(), Server :: depcache_server(), Result :: {ok, any()} | undefined.
undefined
if not found (or not valid).See also:gen_server:call/2.
-spec get(Key, SubKey, Server) -> Result when Key :: key(), SubKey :: key(), Server :: depcache_server(), Result :: {ok, any()} | undefined.
undefined
if not found (or not valid)See also:gen_server:call/2.
-spec get_subkey(Key, SubKey, Server) -> Result when Key :: key(), SubKey :: key(), Server :: depcache_server(), Result :: {ok, any()} | undefined.
undefined
if not found (or not valid)See also:gen_server:call/2.
-spec get_wait(Key, Server) -> Result when Key :: key(), Server :: depcache_server(), Result :: {ok, any()} | undefined | {throw, term()} | {error, premature_exit}.
See also:gen_server:call/3.
-spec in_process_server(Server) -> Result when Server :: depcache_server(), Result :: boolean().
-spec memo(Fun, Server) -> Result when Fun :: memo_fun(), Server :: depcache_server(), Result :: any().
-spec memo(Fun, MaxAge_Key, Server) -> Result when Fun :: memo_fun(), MaxAge_Key :: MaxAge | Key, MaxAge :: max_age_secs(), Key :: key(), Server :: depcache_server(), Result :: any().
MaxAge
seconds.
-spec memo(Fun, Key, MaxAge, Server) -> Result when Fun :: memo_fun(), Key :: key(), MaxAge :: max_age_secs(), Server :: depcache_server(), Result :: any().
Equivalent to memo(Fun, Key, MaxAge, [], Server).
Cache the result of the function as Key forMaxAge
seconds.
-spec memo(Fun, Key, MaxAge, Dep, Server) -> Result when Fun :: memo_fun(), Key :: undefined | key(), MaxAge :: max_age_secs(), Dep :: dependencies(), Server :: depcache_server(), Result :: any().
MaxAge
seconds, flush the cached result if any of the dependencies is changed.
-spec set(Key, Data, Server) -> Result when Key :: key(), Data :: any(), Server :: depcache_server(), Result :: ok.
Equivalent to set(Key, Data, 3600, [], Server).
Add the key to the depcache, hold it for3600
seconds and no dependencies.
-spec set(Key, Data, MaxAge, Server) -> Result when Key :: key(), Data :: any(), MaxAge :: max_age_secs(), Server :: depcache_server(), Result :: ok.
Equivalent to set(Key, Data, MaxAge, [], Server).
Add the key to the depcache, hold it forMaxAge
seconds and no dependencies.
-spec set(Key, Data, MaxAge, Depend, Server) -> Result when Key :: key(), Data :: any(), MaxAge :: max_age_secs(), Depend :: dependencies(), Server :: depcache_server(), Result :: ok.
MaxAge
seconds and check the dependencies.
-spec size(Server) -> Result when Server :: depcache_server(), Result :: non_neg_integer() | undefined.
-spec start_link(Config) -> Result when Config :: config(), Result :: {ok, pid()} | ignore | {error, term()}.
Start a depcache process.
See also:gen_server:start_link/3.
callback => {Module, Function, Arguments}
- depcache event callback
memory_max => MaxMemoryInMB
- number of MB to limit depcache size at
-spec start_link(Name, Config) -> Result when Name :: atom(), Config :: config(), Result :: {ok, pid()} | ignore | {error, term()}.
Start a named depcache process.
See also:gen_server:start_link/4.
callback => {Module, Function, Arguments}
- depcache event callback
memory_max => MaxMemoryInMB
- number of MB to limit depcache size at