\Cake\CacheCache

Cache provides a consistent interface to Caching in your application. It allows you to use several different Cache engines, without coupling your application to a specific implementation. It also allows you to change out cache storage or configuration without effecting the rest of your application.

Configuring Cache engines

You can configure Cache engines in your application's Config/cache.php file. A sample configuration would be:

Cache::config('shared', [
   'className' => 'Cake\Cache\Engine\ApcuEngine',
   'prefix' => 'my_app_'
]);

This would configure an APCu cache engine to the 'shared' alias. You could then read and write to that cache alias by using it for the $config parameter in the various Cache methods.

In general all Cache operations are supported by all cache engines. However, Cache::increment() and Cache::decrement() are not supported by File caching.

There are 6 built-in caching engines:

  • FileEngine - Uses simple files to store content. Poor performance, but good for storing large objects, or things that are not IO sensitive. Well suited to development as it is an easy cache to inspect and manually flush.
  • ApcuEngine - Uses the APCu object cache, one of the fastest caching engines.
  • MemcacheEngine - Uses the PECL::Memcache extension and Memcached for storage. Fast reads/writes, and benefits from memcache being distributed.
  • XcacheEngine - Uses the Xcache extension, an alternative to APCu.
  • WincacheEngine - Uses Windows Cache Extension for PHP. Supports wincache 1.1.0 and higher. This engine is recommended to people deploying on windows with IIS.
  • RedisEngine - Uses redis and php-redis extension to store cache data.

See Cache engine documentation for expected configuration keys.

Summary

Methods
Properties
Constants
setConfig()
getConfig()
config()
drop()
configured()
parseDsn()
setDsnClassMap()
getDsnClassMap()
dsnClassMap()
getRegistry()
setRegistry()
registry()
engine()
pool()
gc()
write()
writeMany()
read()
readMany()
increment()
decrement()
delete()
deleteMany()
clear()
clearAll()
clearGroup()
groupConfigs()
enable()
disable()
enabled()
remember()
add()
No public properties found
No constants found
_buildEngine()
$_config
$_dsnClassMap
$_enabled
$_groups
$_registry
N/A
No private methods found
No private properties found
N/A

Properties

$_config

$_config : array

Configuration sets.

Type

array

$_dsnClassMap

$_dsnClassMap : array

An array mapping url schemes to fully qualified caching engine class names.

Type

array

$_enabled

$_enabled : boolean

Flag for tracking whether or not caching is enabled.

Type

boolean

$_groups

$_groups : array

Group to Config mapping

Type

array

$_registry

$_registry : \Cake\Core\ObjectRegistry

Cache Registry used for creating and using cache adapters.

Type

\Cake\Core\ObjectRegistry

Methods

setConfig()

setConfig(string|array  $key, array  $config = null) : void

This method can be used to define configuration adapters for an application.

To change an adapter's configuration at runtime, first drop the adapter and then reconfigure it.

Adapters will not be constructed until the first operation is done.

Usage

Assuming that the class' name is Cache the following scenarios are supported:

Setting a cache engine up.

Cache::setConfig('default', $settings);

Injecting a constructed adapter in:

Cache::setConfig('default', $instance);

Configure multiple adapters at once:

Cache::setConfig($arrayOfConfig);

Parameters

string|array $key

The name of the configuration, or an array of multiple configs.

array $config

An array of name => configuration data for adapter.

Throws

\BadMethodCallException

When trying to modify an existing config.

\LogicException

When trying to store an invalid structured config array.

getConfig()

getConfig(string  $key) : array|null

Reads existing configuration.

Parameters

string $key

The name of the configuration.

Returns

array|null —

Array of configuration data.

config()

config(string|array  $key, array|null  $config = null) : array|null

This method can be used to define configuration adapters for an application or read existing configuration.

To change an adapter's configuration at runtime, first drop the adapter and then reconfigure it.

Adapters will not be constructed until the first operation is done.

Usage

Assuming that the class' name is Cache the following scenarios are supported:

Reading config data back:

Cache::config('default');

Setting a cache engine up.

Cache::config('default', $settings);

Injecting a constructed adapter in:

Cache::config('default', $instance);

Configure multiple adapters at once:

Cache::config($arrayOfConfig);

Parameters

string|array $key

The name of the configuration, or an array of multiple configs.

array|null $config

An array of name => configuration data for adapter.

Throws

\BadMethodCallException

When trying to modify an existing config.

Returns

array|null —

Null when adding configuration or an array of configuration data when reading.

drop()

drop(string  $config) : boolean

Drops a constructed adapter.

If you wish to modify an existing configuration, you should drop it, change configuration and then re-add it.

If the implementing objects supports a $_registry object the named configuration will also be unloaded from the registry.

Parameters

string $config

An existing configuration you wish to remove.

Returns

boolean —

Success of the removal, returns false when the config does not exist.

configured()

configured() : array<mixed,string>

Returns an array containing the named configurations

Returns

array<mixed,string> —

Array of configurations.

parseDsn()

parseDsn(string  $dsn) : array

Parses a DSN into a valid connection configuration

This method allows setting a DSN using formatting similar to that used by PEAR::DB. The following is an example of its usage:

$dsn = 'mysql://user:pass@localhost/database?';
$config = ConnectionManager::parseDsn($dsn);

$dsn = 'Cake\Log\Engine\FileLog://?types=notice,info,debug&file=debug&path=LOGS';
$config = Log::parseDsn($dsn);

$dsn = 'smtp://user:secret@localhost:25?timeout=30&client=null&tls=null';
$config = Email::parseDsn($dsn);

$dsn = 'file:///?className=\My\Cache\Engine\FileEngine';
$config = Cache::parseDsn($dsn);

$dsn = 'File://?prefix=myapp_cake_core_&serialize=true&duration=+2 minutes&path=/tmp/persistent/';
$config = Cache::parseDsn($dsn);

For all classes, the value of scheme is set as the value of both the className unless they have been otherwise specified.

Note that querystring arguments are also parsed and set as values in the returned configuration.

Parameters

string $dsn

The DSN string to convert to a configuration array

Throws

\InvalidArgumentException

If not passed a string, or passed an invalid string

Returns

array —

The configuration array to be stored after parsing the DSN

setDsnClassMap()

setDsnClassMap(array  $map) : void

Updates the DSN class map for this class.

Parameters

array $map

Additions/edits to the class map to apply.

getDsnClassMap()

getDsnClassMap() : array

Returns the DSN class map for this class.

Returns

array

dsnClassMap()

dsnClassMap(array|null  $map = null) : array

Returns or updates the DSN class map for this class.

Parameters

array|null $map

Additions/edits to the class map to apply.

Returns

array

getRegistry()

getRegistry() : \Cake\Core\ObjectRegistry

Returns the Cache Registry instance used for creating and using cache adapters.

Returns

\Cake\Core\ObjectRegistry

setRegistry()

setRegistry(\Cake\Core\ObjectRegistry  $registry) : void

Sets the Cache Registry instance used for creating and using cache adapters.

Also allows for injecting of a new registry instance.

Parameters

\Cake\Core\ObjectRegistry $registry

Injectable registry object.

registry()

registry(\Cake\Core\ObjectRegistry|null  $registry = null) : \Cake\Core\ObjectRegistry

Returns the Cache Registry instance used for creating and using cache adapters.

Also allows for injecting of a new registry instance.

Parameters

\Cake\Core\ObjectRegistry|null $registry

Injectable registry object.

Returns

\Cake\Core\ObjectRegistry

engine()

engine(string  $config) : \Cake\Cache\CacheEngine

Fetch the engine attached to a specific configuration name.

If the cache engine & configuration are missing an error will be triggered.

Parameters

string $config

The configuration name you want an engine for.

Returns

\Cake\Cache\CacheEngine

When caching is disabled a null engine will be returned.

pool()

pool(string  $config) : \Cake\Cache\SimpleCacheEngine

Get a SimpleCacheEngine object for the named cache pool.

Parameters

string $config

The name of the configured cache backend.

Returns

\Cake\Cache\SimpleCacheEngine

gc()

gc(string  $config = 'default', integer|null  $expires = null) : void

Garbage collection

Permanently remove all expired and deleted data

Parameters

string $config

[optional] The config name you wish to have garbage collected. Defaults to 'default'

integer|null $expires

[optional] An expires timestamp. Defaults to NULL

write()

write(string  $key, mixed  $value, string  $config = 'default') : boolean

Write data for key into cache.

Usage:

Writing to the active cache config:

Cache::write('cached_data', $data);

Writing to a specific cache config:

Cache::write('cached_data', $data, 'long_term');

Parameters

string $key

Identifier for the data

mixed $value

Data to be cached - anything except a resource

string $config

Optional string configuration name to write to. Defaults to 'default'

Returns

boolean —

True if the data was successfully cached, false on failure

writeMany()

writeMany(array  $data, string  $config = 'default') : array

Write data for many keys into cache.

Usage:

Writing to the active cache config:

Cache::writeMany(['cached_data_1' => 'data 1', 'cached_data_2' => 'data 2']);

Writing to a specific cache config:

Cache::writeMany(['cached_data_1' => 'data 1', 'cached_data_2' => 'data 2'], 'long_term');

Parameters

array $data

An array of data to be stored in the cache

string $config

Optional string configuration name to write to. Defaults to 'default'

Throws

\RuntimeException

Returns

array —

of bools for each key provided, indicating true for success or false for fail

read()

read(string  $key, string  $config = 'default') : mixed

Read a key from the cache.

Usage:

Reading from the active cache configuration.

Cache::read('my_data');

Reading from a specific cache configuration.

Cache::read('my_data', 'long_term');

Parameters

string $key

Identifier for the data

string $config

optional name of the configuration to use. Defaults to 'default'

Returns

mixed —

The cached data, or false if the data doesn't exist, has expired, or if there was an error fetching it

readMany()

readMany(array  $keys, string  $config = 'default') : array

Read multiple keys from the cache.

Usage:

Reading multiple keys from the active cache configuration.

Cache::readMany(['my_data_1', 'my_data_2]);

Reading from a specific cache configuration.

Cache::readMany(['my_data_1', 'my_data_2], 'long_term');

Parameters

array $keys

an array of keys to fetch from the cache

string $config

optional name of the configuration to use. Defaults to 'default'

Returns

array —

An array containing, for each of the given $keys, the cached data or false if cached data could not be retrieved.

increment()

increment(string  $key, integer  $offset = 1, string  $config = 'default') : mixed

Increment a number under the key and return incremented value.

Parameters

string $key

Identifier for the data

integer $offset

How much to add

string $config

Optional string configuration name. Defaults to 'default'

Returns

mixed —

new value, or false if the data doesn't exist, is not integer, or if there was an error fetching it.

decrement()

decrement(string  $key, integer  $offset = 1, string  $config = 'default') : mixed

Decrement a number under the key and return decremented value.

Parameters

string $key

Identifier for the data

integer $offset

How much to subtract

string $config

Optional string configuration name. Defaults to 'default'

Returns

mixed —

new value, or false if the data doesn't exist, is not integer, or if there was an error fetching it

delete()

delete(string  $key, string  $config = 'default') : boolean

Delete a key from the cache.

Usage:

Deleting from the active cache configuration.

Cache::delete('my_data');

Deleting from a specific cache configuration.

Cache::delete('my_data', 'long_term');

Parameters

string $key

Identifier for the data

string $config

name of the configuration to use. Defaults to 'default'

Returns

boolean —

True if the value was successfully deleted, false if it didn't exist or couldn't be removed

deleteMany()

deleteMany(array  $keys, string  $config = 'default') : array

Delete many keys from the cache.

Usage:

Deleting multiple keys from the active cache configuration.

Cache::deleteMany(['my_data_1', 'my_data_2']);

Deleting from a specific cache configuration.

Cache::deleteMany(['my_data_1', 'my_data_2], 'long_term');

Parameters

array $keys

Array of cache keys to be deleted

string $config

name of the configuration to use. Defaults to 'default'

Returns

array —

of boolean values that are true if the value was successfully deleted, false if it didn't exist or couldn't be removed

clear()

clear(boolean  $check = false, string  $config = 'default') : boolean

Delete all keys from the cache.

Parameters

boolean $check

if true will check expiration, otherwise delete all. This parameter will become a no-op value in 4.0 as it is deprecated.

string $config

name of the configuration to use. Defaults to 'default'

Returns

boolean —

True if the cache was successfully cleared, false otherwise

clearAll()

clearAll(boolean  $check = false) : array

Delete all keys from the cache from all configurations.

Parameters

boolean $check

if true will check expiration, otherwise delete all. This parameter will become a no-op value in 4.0 as it is deprecated.

Returns

array —

Status code. For each configuration, it reports the status of the operation

clearGroup()

clearGroup(string  $group, string  $config = 'default') : boolean

Delete all keys from the cache belonging to the same group.

Parameters

string $group

name of the group to be cleared

string $config

name of the configuration to use. Defaults to 'default'

Returns

boolean —

True if the cache group was successfully cleared, false otherwise

groupConfigs()

groupConfigs(string|null  $group = null) : array

Retrieve group names to config mapping.

Cache::config('daily', ['duration' => '1 day', 'groups' => ['posts']]);
Cache::config('weekly', ['duration' => '1 week', 'groups' => ['posts', 'archive']]);
$configs = Cache::groupConfigs('posts');

$configs will equal to ['posts' => ['daily', 'weekly']] Calling this method will load all the configured engines.

Parameters

string|null $group

group name or null to retrieve all group mappings

Throws

\InvalidArgumentException

Returns

array —

map of group and all configuration that has the same group

enable()

enable() : void

Re-enable caching.

If caching has been disabled with Cache::disable() this method will reverse that effect.

disable()

disable() : void

Disable caching.

When disabled all cache operations will return null.

enabled()

enabled() : boolean

Check whether or not caching is enabled.

Returns

boolean

remember()

remember(string  $key, callable  $callable, string  $config = 'default') : mixed

Provides the ability to easily do read-through caching.

When called if the $key is not set in $config, the $callable function will be invoked. The results will then be stored into the cache config at key.

Examples:

Using a Closure to provide data, assume $this is a Table object:

$results = Cache::remember('all_articles', function () {
     return $this->find('all');
});

Parameters

string $key

The cache key to read/store data at.

callable $callable

The callable that provides data in the case when the cache key is empty. Can be any callable type supported by your PHP.

string $config

The cache configuration to use for this operation. Defaults to default.

Returns

mixed —

If the key is found: the cached data, false if the data missing/expired, or an error. If the key is not found: boolean of the success of the write

add()

add(string  $key, mixed  $value, string  $config = 'default') : boolean

Write data for key into a cache engine if it doesn't exist already.

Usage:

Writing to the active cache config:

Cache::add('cached_data', $data);

Writing to a specific cache config:

Cache::add('cached_data', $data, 'long_term');

Parameters

string $key

Identifier for the data.

mixed $value

Data to be cached - anything except a resource.

string $config

Optional string configuration name to write to. Defaults to 'default'.

Returns

boolean —

True if the data was successfully cached, false on failure. Or if the key existed already.

_buildEngine()

_buildEngine(string  $name) : void

Finds and builds the instance of the required engine class.

Parameters

string $name

Name of the config array that needs an engine instance built

Throws

\InvalidArgumentException

When a cache engine cannot be created.