class CRM_Utils_Cache_FastArrayDecorator implements CRM_Utils_Cache_Interface

Class CRM_Utils_Cache_FastArrayDecorator

Like CRM_Utils_Cache_ArrayDecorator, this creates a two-tier cache. But it's... faster. The speed improvements are achieved by sacrificing compliance with PSR-16. Specific trade-offs:

  1. TTL values are not tracked locally. Any data cached locally will stay active until the instance is destroyed (i.e. until the request ends). You won't notice this is you have short-lived requests and long-lived caches.
  2. If you store an object in the local cache, the same object instance will be used through the end of the request. If you modify a property of the object, the change will endure within the current pageview but will not pass-through to the persistent cache.

But... it is twice as fast (on high-volume reads).

Ex: $cache = new CRM_Utils_Cache_FastArrayDecorator(new CRM_Utils_Cache_Redis(...));

Traits

Properties

protected int $defaultTimeout

Methods

iterable
getMultiple(iterable $keys, mixed $default = NULL)

Obtains multiple cache items by their unique keys.

bool
setMultiple(iterable $values, null|int|DateInterval $ttl = NULL)

Persists a set of key => value pairs in the cache, with an optional TTL.

bool
deleteMultiple(iterable $keys)

Deletes multiple cache items in a single operation.

__construct(CRM_Utils_Cache_Interface $delegate, int $defaultTimeout = 3600)

CRM_Utils_Cache_FastArrayDecorator constructor.

bool
set(string $key, mixed $value, null|int|DateInterval $ttl = NULL)

Set the value in the cache.

mixed
get(string $key, mixed $default = NULL)

Get a value from the cache.

bool
delete(string $key)

Delete a value from the cache.

bool
flush()

Delete all values from the cache.

bool
clear()

Delete all values from the cache.

bool
has(string $key)

Determines whether an item is present in the cache.

Details

iterable getMultiple(iterable $keys, mixed $default = NULL)

Obtains multiple cache items by their unique keys.

Parameters

iterable $keys A list of keys that can obtained in a single operation.
mixed $default Default value to return for keys that do not exist.

Return Value

iterable A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value.

Exceptions

InvalidArgumentException MUST be thrown if $keys is neither an array nor a Traversable, or if any of the $keys are not a legal value.

bool setMultiple(iterable $values, null|int|DateInterval $ttl = NULL)

Persists a set of key => value pairs in the cache, with an optional TTL.

Parameters

iterable $values A list of key => value pairs for a multiple-set operation.
null|int|DateInterval $ttl Optional. The TTL value of this item. If no value is sent and the driver supports TTL then the library may set a default value for it or let the driver take care of that.

Return Value

bool True on success and false on failure.

Exceptions

InvalidArgumentException MUST be thrown if $values is neither an array nor a Traversable, or if any of the $values are not a legal value.

bool deleteMultiple(iterable $keys)

Deletes multiple cache items in a single operation.

Parameters

iterable $keys A list of string-based keys to be deleted.

Return Value

bool True if the items were successfully removed. False if there was an error.

Exceptions

InvalidArgumentException MUST be thrown if $keys is neither an array nor a Traversable, or if any of the $keys are not a legal value.

at line 83
__construct(CRM_Utils_Cache_Interface $delegate, int $defaultTimeout = 3600)

CRM_Utils_Cache_FastArrayDecorator constructor.

Parameters

CRM_Utils_Cache_Interface $delegate
int $defaultTimeout Default number of seconds each cache-item should endure.

at line 88
bool set(string $key, mixed $value, null|int|DateInterval $ttl = NULL)

Set the value in the cache.

Parameters

string $key
mixed $value
null|int|DateInterval $ttl

Return Value

bool

at line 102
mixed get(string $key, mixed $default = NULL)

Get a value from the cache.

Parameters

string $key
mixed $default

Return Value

mixed The previously set value value, or $default (NULL).

at line 118
bool delete(string $key)

Delete a value from the cache.

Parameters

string $key

Return Value

bool

at line 124
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.

Return Value

bool

at line 128
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.

Return Value

bool

at line 133
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.

Parameters

string $key The cache item key.

Return Value

bool