Application cache backed by Nebulex.
This cache uses a 2-level (near-cache) topology via
Nebulex.Adapters.Multilevel:
- L1: local in-memory cache (
Gamend.Cache.L1) - L2: either Redis (
Gamend.Cache.L2.Redis) or a partitioned topology (Gamend.Cache.L2.Partitioned), selected via runtime config.
Summary
Functions
Increments the version counter at key and broadcasts the bump so every
other app instance increments its local copy too (see Gamend.Cache.Sync).
Cache-through helper: returns the cached value for key, or computes and
caches the result of fun.
Callback implementation for Nebulex.Cache.count_all/2.
Callback implementation for Nebulex.Cache.count_all/3.
Callback implementation for Nebulex.Cache.count_all!/2.
Callback implementation for Nebulex.Cache.count_all!/3.
Callback implementation for Nebulex.Cache.decr/3.
Callback implementation for Nebulex.Cache.decr/4.
Callback implementation for Nebulex.Cache.decr!/3.
Callback implementation for Nebulex.Cache.decr!/4.
Callback implementation for Nebulex.Cache.delete/2.
Callback implementation for Nebulex.Cache.delete/3.
Callback implementation for Nebulex.Cache.delete!/2.
Callback implementation for Nebulex.Cache.delete!/3.
Callback implementation for Nebulex.Cache.delete_all/2.
Callback implementation for Nebulex.Cache.delete_all/3.
Callback implementation for Nebulex.Cache.delete_all!/2.
Callback implementation for Nebulex.Cache.delete_all!/3.
Callback implementation for Nebulex.Cache.expire/3.
Callback implementation for Nebulex.Cache.expire/4.
Callback implementation for Nebulex.Cache.expire!/3.
Callback implementation for Nebulex.Cache.expire!/4.
Callback implementation for Nebulex.Cache.fetch/2.
Callback implementation for Nebulex.Cache.fetch/3.
Callback implementation for Nebulex.Cache.fetch!/2.
Callback implementation for Nebulex.Cache.fetch!/3.
Callback implementation for Nebulex.Cache.fetch_or_store/3.
Callback implementation for Nebulex.Cache.fetch_or_store/4.
Callback implementation for Nebulex.Cache.fetch_or_store!/3.
Callback implementation for Nebulex.Cache.fetch_or_store!/4.
Callback implementation for Nebulex.Cache.get/3.
Callback implementation for Nebulex.Cache.get/4.
Callback implementation for Nebulex.Cache.get!/3.
Callback implementation for Nebulex.Cache.get!/4.
Callback implementation for Nebulex.Cache.get_all/2.
Callback implementation for Nebulex.Cache.get_all/3.
Callback implementation for Nebulex.Cache.get_all!/2.
Callback implementation for Nebulex.Cache.get_all!/3.
Callback implementation for Nebulex.Cache.get_and_update/3.
Callback implementation for Nebulex.Cache.get_and_update/4.
Callback implementation for Nebulex.Cache.get_and_update!/3.
Callback implementation for Nebulex.Cache.get_and_update!/4.
Callback implementation for Nebulex.Cache.get_or_store/3.
Callback implementation for Nebulex.Cache.get_or_store/4.
Callback implementation for Nebulex.Cache.get_or_store!/3.
Callback implementation for Nebulex.Cache.get_or_store!/4.
Callback implementation for Nebulex.Cache.has_key?/2.
Callback implementation for Nebulex.Cache.has_key?/3.
Callback implementation for Nebulex.Cache.in_transaction?/1.
Callback implementation for Nebulex.Cache.in_transaction?/2.
A convenience function to get the cache inclusion policy.
Callback implementation for Nebulex.Cache.incr/3.
Callback implementation for Nebulex.Cache.incr/4.
Callback implementation for Nebulex.Cache.incr!/3.
Callback implementation for Nebulex.Cache.incr!/4.
Callback implementation for Nebulex.Cache.info/2.
Callback implementation for Nebulex.Cache.info/3.
Callback implementation for Nebulex.Cache.info!/2.
Callback implementation for Nebulex.Cache.info!/3.
Deletes key on this node (all cache levels) and broadcasts the deletion so
every other app instance evicts the key from its local L1
(see Gamend.Cache.Sync).
PubSub topic that invalidate/1 broadcasts on.
Callback implementation for Nebulex.Cache.put/3.
Callback implementation for Nebulex.Cache.put/4.
Callback implementation for Nebulex.Cache.put!/3.
Callback implementation for Nebulex.Cache.put!/4.
Callback implementation for Nebulex.Cache.put_all/2.
Callback implementation for Nebulex.Cache.put_all/3.
Callback implementation for Nebulex.Cache.put_all!/2.
Callback implementation for Nebulex.Cache.put_all!/3.
Callback implementation for Nebulex.Cache.put_new/3.
Callback implementation for Nebulex.Cache.put_new/4.
Callback implementation for Nebulex.Cache.put_new!/3.
Callback implementation for Nebulex.Cache.put_new!/4.
Callback implementation for Nebulex.Cache.put_new_all/2.
Callback implementation for Nebulex.Cache.put_new_all/3.
Callback implementation for Nebulex.Cache.put_new_all!/2.
Callback implementation for Nebulex.Cache.put_new_all!/3.
Callback implementation for Nebulex.Cache.register_event_listener/2.
Callback implementation for Nebulex.Cache.register_event_listener/3.
Callback implementation for Nebulex.Cache.register_event_listener!/2.
Callback implementation for Nebulex.Cache.register_event_listener!/3.
Callback implementation for Nebulex.Cache.replace/3.
Callback implementation for Nebulex.Cache.replace/4.
Callback implementation for Nebulex.Cache.replace!/3.
Callback implementation for Nebulex.Cache.replace!/4.
Callback implementation for Nebulex.Cache.stream/2.
Callback implementation for Nebulex.Cache.stream/3.
Callback implementation for Nebulex.Cache.stream!/2.
Callback implementation for Nebulex.Cache.stream!/3.
Callback implementation for Nebulex.Cache.take/2.
Callback implementation for Nebulex.Cache.take/3.
Callback implementation for Nebulex.Cache.take!/2.
Callback implementation for Nebulex.Cache.take!/3.
Callback implementation for Nebulex.Cache.touch/2.
Callback implementation for Nebulex.Cache.touch/3.
Callback implementation for Nebulex.Cache.touch!/2.
Callback implementation for Nebulex.Cache.touch!/3.
Callback implementation for Nebulex.Cache.transaction/2.
Callback implementation for Nebulex.Cache.transaction/3.
Callback implementation for Nebulex.Cache.ttl/2.
Callback implementation for Nebulex.Cache.ttl/3.
Callback implementation for Nebulex.Cache.ttl!/2.
Callback implementation for Nebulex.Cache.ttl!/3.
Callback implementation for Nebulex.Cache.unregister_event_listener/2.
Callback implementation for Nebulex.Cache.unregister_event_listener/3.
Callback implementation for Nebulex.Cache.unregister_event_listener!/2.
Callback implementation for Nebulex.Cache.unregister_event_listener!/3.
Callback implementation for Nebulex.Cache.update/4.
Callback implementation for Nebulex.Cache.update/5.
Callback implementation for Nebulex.Cache.update!/4.
Callback implementation for Nebulex.Cache.update!/5.
Functions
@spec bump_version(term()) :: :ok
Increments the version counter at key and broadcasts the bump so every
other app instance increments its local copy too (see Gamend.Cache.Sync).
Version-keyed caches embed the counter in their data keys, so any change to the counter forces a fresh recompute on the next read. Remote nodes apply a bump rather than a delete: a delete would re-seed their counter at 1, which can collide with version values whose data entries are still inside a TTL, while a bump is monotonic per node.
Cache-through helper: returns the cached value for key, or computes and
caches the result of fun.
Cached nil results are honored — fun only runs on a real cache miss.
Options
:ttl— time-to-live in milliseconds
Callback implementation for Nebulex.Cache.count_all/2.
Callback implementation for Nebulex.Cache.count_all/3.
Callback implementation for Nebulex.Cache.count_all!/2.
Callback implementation for Nebulex.Cache.count_all!/3.
Callback implementation for Nebulex.Cache.decr/3.
Callback implementation for Nebulex.Cache.decr/4.
Callback implementation for Nebulex.Cache.decr!/3.
Callback implementation for Nebulex.Cache.decr!/4.
Callback implementation for Nebulex.Cache.delete/2.
Callback implementation for Nebulex.Cache.delete/3.
Callback implementation for Nebulex.Cache.delete!/2.
Callback implementation for Nebulex.Cache.delete!/3.
Callback implementation for Nebulex.Cache.delete_all/2.
Callback implementation for Nebulex.Cache.delete_all/3.
Callback implementation for Nebulex.Cache.delete_all!/2.
Callback implementation for Nebulex.Cache.delete_all!/3.
Callback implementation for Nebulex.Cache.expire/3.
Callback implementation for Nebulex.Cache.expire/4.
Callback implementation for Nebulex.Cache.expire!/3.
Callback implementation for Nebulex.Cache.expire!/4.
Callback implementation for Nebulex.Cache.fetch/2.
Callback implementation for Nebulex.Cache.fetch/3.
Callback implementation for Nebulex.Cache.fetch!/2.
Callback implementation for Nebulex.Cache.fetch!/3.
Callback implementation for Nebulex.Cache.fetch_or_store/3.
Callback implementation for Nebulex.Cache.fetch_or_store/4.
Callback implementation for Nebulex.Cache.fetch_or_store!/3.
Callback implementation for Nebulex.Cache.fetch_or_store!/4.
Callback implementation for Nebulex.Cache.get/3.
Callback implementation for Nebulex.Cache.get/4.
Callback implementation for Nebulex.Cache.get!/3.
Callback implementation for Nebulex.Cache.get!/4.
Callback implementation for Nebulex.Cache.get_all/2.
Callback implementation for Nebulex.Cache.get_all/3.
Callback implementation for Nebulex.Cache.get_all!/2.
Callback implementation for Nebulex.Cache.get_all!/3.
Callback implementation for Nebulex.Cache.get_and_update/3.
Callback implementation for Nebulex.Cache.get_and_update/4.
Callback implementation for Nebulex.Cache.get_and_update!/3.
Callback implementation for Nebulex.Cache.get_and_update!/4.
Callback implementation for Nebulex.Cache.get_or_store/3.
Callback implementation for Nebulex.Cache.get_or_store/4.
Callback implementation for Nebulex.Cache.get_or_store!/3.
Callback implementation for Nebulex.Cache.get_or_store!/4.
Callback implementation for Nebulex.Cache.has_key?/2.
Callback implementation for Nebulex.Cache.has_key?/3.
Callback implementation for Nebulex.Cache.in_transaction?/1.
Callback implementation for Nebulex.Cache.in_transaction?/2.
A convenience function to get the cache inclusion policy.
Callback implementation for Nebulex.Cache.incr/3.
Callback implementation for Nebulex.Cache.incr/4.
Callback implementation for Nebulex.Cache.incr!/3.
Callback implementation for Nebulex.Cache.incr!/4.
Callback implementation for Nebulex.Cache.info/2.
Callback implementation for Nebulex.Cache.info/3.
Callback implementation for Nebulex.Cache.info!/2.
Callback implementation for Nebulex.Cache.info!/3.
@spec invalidate(term()) :: :ok
Deletes key on this node (all cache levels) and broadcasts the deletion so
every other app instance evicts the key from its local L1
(see Gamend.Cache.Sync).
Use this instead of delete/1 whenever a stale read would be incorrect
rather than merely briefly outdated — e.g. cached user structs that gate
authentication (token_version) or account state (is_activated).
@spec invalidation_topic() :: String.t()
PubSub topic that invalidate/1 broadcasts on.
Callback implementation for Nebulex.Cache.put/3.
Callback implementation for Nebulex.Cache.put/4.
Callback implementation for Nebulex.Cache.put!/3.
Callback implementation for Nebulex.Cache.put!/4.
Callback implementation for Nebulex.Cache.put_all/2.
Callback implementation for Nebulex.Cache.put_all/3.
Callback implementation for Nebulex.Cache.put_all!/2.
Callback implementation for Nebulex.Cache.put_all!/3.
Callback implementation for Nebulex.Cache.put_new/3.
Callback implementation for Nebulex.Cache.put_new/4.
Callback implementation for Nebulex.Cache.put_new!/3.
Callback implementation for Nebulex.Cache.put_new!/4.
Callback implementation for Nebulex.Cache.put_new_all/2.
Callback implementation for Nebulex.Cache.put_new_all/3.
Callback implementation for Nebulex.Cache.put_new_all!/2.
Callback implementation for Nebulex.Cache.put_new_all!/3.
Callback implementation for Nebulex.Cache.register_event_listener/2.
Callback implementation for Nebulex.Cache.register_event_listener/3.
Callback implementation for Nebulex.Cache.register_event_listener!/2.
Callback implementation for Nebulex.Cache.register_event_listener!/3.
Callback implementation for Nebulex.Cache.replace/3.
Callback implementation for Nebulex.Cache.replace/4.
Callback implementation for Nebulex.Cache.replace!/3.
Callback implementation for Nebulex.Cache.replace!/4.
Callback implementation for Nebulex.Cache.stream/2.
Callback implementation for Nebulex.Cache.stream/3.
Callback implementation for Nebulex.Cache.stream!/2.
Callback implementation for Nebulex.Cache.stream!/3.
Callback implementation for Nebulex.Cache.take/2.
Callback implementation for Nebulex.Cache.take/3.
Callback implementation for Nebulex.Cache.take!/2.
Callback implementation for Nebulex.Cache.take!/3.
Callback implementation for Nebulex.Cache.touch/2.
Callback implementation for Nebulex.Cache.touch/3.
Callback implementation for Nebulex.Cache.touch!/2.
Callback implementation for Nebulex.Cache.touch!/3.
Callback implementation for Nebulex.Cache.transaction/2.
Callback implementation for Nebulex.Cache.transaction/3.
Callback implementation for Nebulex.Cache.ttl/2.
Callback implementation for Nebulex.Cache.ttl/3.
Callback implementation for Nebulex.Cache.ttl!/2.
Callback implementation for Nebulex.Cache.ttl!/3.
Callback implementation for Nebulex.Cache.unregister_event_listener/2.
Callback implementation for Nebulex.Cache.unregister_event_listener/3.
Callback implementation for Nebulex.Cache.unregister_event_listener!/2.
Callback implementation for Nebulex.Cache.unregister_event_listener!/3.
Callback implementation for Nebulex.Cache.update/4.
Callback implementation for Nebulex.Cache.update/5.
Callback implementation for Nebulex.Cache.update!/4.
Callback implementation for Nebulex.Cache.update!/5.