CRM_Utils_Cache_Tiered
class CRM_Utils_Cache_Tiered implements CRM_Utils_Cache_Interface
Class CRM_Utils_Cache_Tiered
Tiered
implements a hierarchy of fast and slow caches. For example, you
might have a configuration in which:
- A local/in-memory array caches info for up to 1 minute (60s).
- A Redis cache retains info for up to 10 minutes (600s).
- A SQL cache retains info for up to 1 hour (3600s).
Cached data will be written to all three tiers. When reading, you'll hit the fastest available tier.
The example would be created with:
$cache = new CRM_Utils_Cache_Tiered([ new CRM_Utils_Cache_ArrayCache(...), new CRM_Utils_Cache_Redis(...), new CRM_Utils_Cache_SqlGroup(...), ], [60, 600, 3600]);
Note: - Correctly implementing PSR-16 leads to a small amount of CPU+mem overhead. If you need an extremely high number of re-reads within a thread and can live with only two tiers, try CRM_Utils_Cache_ArrayDecorator or CRM_Utils_Cache_FastArrayDecorator instead. - With the exception of unit-testing, you should not access the underlying tiers directly. The data-format may be different than your expectation.
Traits
Properties
protected array | $maxTimeouts | ||
protected array | $tiers |
Methods
Obtains multiple cache items by their unique keys.
Persists a set of key => value pairs in the cache, with an optional TTL.
Deletes multiple cache items in a single operation.
CRM_Utils_Cache_Tiered constructor.
Get a value from the cache.
Delete a value from the cache.
Delete all values from the cache.
Delete all values from the cache.
Determines whether an item is present in the cache.
No description
Details
in CRM_Utils_Cache_NaiveMultipleTrait at line 53
iterable
getMultiple(iterable $keys, mixed $default = NULL)
Obtains multiple cache items by their unique keys.
in CRM_Utils_Cache_NaiveMultipleTrait at line 77
bool
setMultiple(iterable $values, null|int|DateInterval $ttl = NULL)
Persists a set of key => value pairs in the cache, with an optional TTL.
in CRM_Utils_Cache_NaiveMultipleTrait at line 101
bool
deleteMultiple(iterable $keys)
Deletes multiple cache items in a single operation.
at line 92
__construct(array $tiers, array $maxTimeouts = [86400])
CRM_Utils_Cache_Tiered constructor.
at line 110
bool
set(string $key, mixed $value, null|int|DateInterval $ttl = NULL)
Set the value in the cache.
at line 125
mixed
get(string $key, mixed $default = NULL)
Get a value from the cache.
at line 144
bool
delete(string $key)
Delete a value from the cache.
at line 152
bool
flush()
Delete all values from the cache.
NOTE: flush() and clear() should be aliases. flush() is specified by Civi's traditional interface, and clear() is specified by PSR-16.
at line 156
bool
clear()
Delete all values from the cache.
NOTE: flush() and clear() should be aliases. flush() is specified by Civi's traditional interface, and clear() is specified by PSR-16.
at line 166
bool
has(string $key)
Determines whether an item is present in the cache.
NOTE: It is recommended that has() is only to be used for cache warming type purposes and not to be used within your live applications operations for get/set, as this method is subject to a race condition where your has() will return true and immediately after, another script can remove it making the state of your app out of date.