Documentation

CRM_Utils_Cache_FastArrayDecorator
in package
implements CRM_Utils_Cache_Interface uses CRM_Utils_Cache_NaiveMultipleTrait

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(...));

Tags
see
CRM_Utils_Cache_ArrayDecorator

Table of Contents

Interfaces

CRM_Utils_Cache_Interface

Properties

$defaultTimeout  : int
$delegate  : CRM_Utils_Cache_Interface
$values  : array<string|int, mixed>

Methods

__construct()  : mixed
CRM_Utils_Cache_FastArrayDecorator constructor.
clear()  : bool
Delete all values from the cache.
delete()  : bool
Delete a value from the cache.
deleteMultiple()  : bool
Deletes multiple cache items in a single operation.
flush()  : bool
Delete all values from the cache.
get()  : mixed
Get a value from the cache.
getMultiple()  : iterable<string|int, mixed>
Obtains multiple cache items by their unique keys.
has()  : bool
Determines whether an item is present in the cache.
set()  : bool
Set the value in the cache.
setMultiple()  : bool
Persists a set of key => value pairs in the cache, with an optional TTL.
assertIterable()  : mixed

Properties

$defaultTimeout

protected int $defaultTimeout

Default time-to-live (seconds) for cache items that don't have a TTL.

$values

private array<string|int, mixed> $values = []

Array(string $cacheKey => mixed $cacheValue).

Methods

clear()

Delete all values from the cache.

public clear() : bool

NOTE: flush() and clear() should be aliases. flush() is specified by Civi's traditional interface, and clear() is specified by PSR-16.

Return values
bool

delete()

Delete a value from the cache.

public delete(mixed $key) : bool
Parameters
$key : mixed
Return values
bool

deleteMultiple()

Deletes multiple cache items in a single operation.

public deleteMultiple(iterable<string|int, mixed> $keys) : bool
Parameters
$keys : iterable<string|int, mixed>

A list of string-based keys to be deleted.

Tags
throws
InvalidArgumentException

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

Return values
bool

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

flush()

Delete all values from the cache.

public flush() : bool

NOTE: flush() and clear() should be aliases. flush() is specified by Civi's traditional interface, and clear() is specified by PSR-16.

Return values
bool

get()

Get a value from the cache.

public get(mixed $key[, mixed $default = NULL ]) : mixed
Parameters
$key : mixed
$default : mixed = NULL
Return values
mixed

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

getMultiple()

Obtains multiple cache items by their unique keys.

public getMultiple(iterable<string|int, mixed> $keys[, mixed $default = NULL ]) : iterable<string|int, mixed>
Parameters
$keys : iterable<string|int, mixed>

A list of keys that can obtained in a single operation.

$default : mixed = NULL

Default value to return for keys that do not exist.

Tags
throws
InvalidArgumentException

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

Return values
iterable<string|int, mixed>

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

has()

Determines whether an item is present in the cache.

public has(mixed $key) : bool

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
$key : mixed

The cache item key.

Return values
bool

set()

Set the value in the cache.

public set(mixed $key, mixed $value[, mixed $ttl = NULL ]) : bool
Parameters
$key : mixed
$value : mixed
$ttl : mixed = NULL
Return values
bool

setMultiple()

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

public setMultiple(iterable<string|int, mixed> $values[, null|int|DateInterval $ttl = NULL ]) : bool
Parameters
$values : iterable<string|int, mixed>

A list of key => value pairs for a multiple-set operation.

$ttl : null|int|DateInterval = NULL

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.

Tags
throws
InvalidArgumentException

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

Return values
bool

True on success and false on failure.


        
On this page

Search results