Caching Driver
CodeIgniter features wrappers around some of the most popular forms offast and dynamic caching. All but file-based caching require specificserver requirements, and a Fatal Exception will be thrown if serverrequirements are not met.
Example Usage
The following example shows a common usage pattern within your controllers.
- if ( ! $foo = cache('foo'))
- {
- echo 'Saving to the cache!<br />';
- $foo = 'foobarbaz!';
- // Save into the cache for 5 minutes
- cache()->save('foo', $foo, 300);
- }
- echo $foo;
You can grab an instance of the cache engine directly through the Services class:
- $cache = \Config\Services::cache();
- $foo = $cache->get('foo');
Configuring the Cache
All configuration for the cache engine is done in app/Config/Cache.php. In that file,the following items are available.
$handler
The is the name of the handler that should be used as the primary handler when starting up the engine.Available names are: dummy, file, memcached, redis, wincache.
$backupHandler
In the case that the first choice $hanlder is not available, this is the next cache handler to load.This is commonly the file handler since the file system is always available, but may not fitmore complex, multi-server setups.
$prefix
If you have more than one application using the same cache storage, you can add a custom prefixhere that is prepended to all key names.
$path
This is used by the file
handler to show where it should save the cache files to.
$memcached
This is an array of servers that will be used when using the Memcache(d)
handler.
$redis
The settings for the Redis server that you wish to use when using the Redis
handler.
Class Reference
⠀isSupported()
Returns:TRUE if supported, FALSE if notReturn type:bool
⠀get($key)
Parameters:
- $key (string) – Cache item nameReturns:Item value or NULL if not foundReturn type:mixed
This method will attempt to fetch an item from the cache store. If theitem does not exist, the method will return NULL.
Example:
- $foo = $cache->get('my_cached_item');
⠀save($key, $data[, $ttl = 60[, $raw = FALSE]])
Parameters:
- $key (string) – Cache item name
- $data (mixed) – the data to save
- $ttl (int) – Time To Live, in seconds (default 60)
- $raw (bool) – Whether to store the raw valueReturns:TRUE on success, FALSE on failureReturn type:string
This method will save an item to the cache store. If saving fails, themethod will return FALSE.
Example:
- $cache->save('cache_item_id', 'data_to_cache');
Note
The $raw
parameter is only utilized by Memcache,in order to allow usage of increment()
and decrement()
.
⠀delete($key)
Parameters:
- $key (string) – name of cached itemReturns:TRUE on success, FALSE on failureReturn type:bool
This method will delete a specific item from the cache store. If itemdeletion fails, the method will return FALSE.
Example:
- $cache->delete('cache_item_id');
⠀increment($key[, $offset = 1])
Parameters:
- $key (string) – Cache ID
- $offset (int) – Step/value to addReturns:New value on success, FALSE on failureReturn type:mixed
Performs atomic incrementation of a raw stored value.
Example:
- // 'iterator' has a value of 2
- $cache->increment('iterator'); // 'iterator' is now 3
- $cache->increment('iterator', 3); // 'iterator' is now 6
⠀decrement($key[, $offset = 1])
Parameters:
- $key (string) – Cache ID
- $offset (int) – Step/value to reduce byReturns:New value on success, FALSE on failureReturn type:mixed
Performs atomic decrementation of a raw stored value.
Example:
- // 'iterator' has a value of 6
- $cache->decrement('iterator'); // 'iterator' is now 5
- $cache->decrement('iterator', 2); // 'iterator' is now 3
⠀clean()
Returns:TRUE on success, FALSE on failureReturn type:bool
This method will ‘clean’ the entire cache. If the deletion of thecache files fails, the method will return FALSE.
Example:
- $cache->clean();
⠀cache_info()
Returns:Information on the entire cache databaseReturn type:mixed
This method will return information on the entire cache.
Example:
- var_dump($cache->cache_info());
Note
The information returned and the structure of the data is dependenton which adapter is being used.
⠀getMetadata($key)
Parameters:
- $key (string) – Cache item nameReturns:Metadata for the cached itemReturn type:mixed
This method will return detailed information on a specific item in thecache.
Example:
- var_dump($cache->getMetadata('my_cached_item'));
Note
The information returned and the structure of the data is dependenton which adapter is being used.
Drivers
File-based Caching
Unlike caching from the Output Class, the driver file-based cachingallows for pieces of view files to be cached. Use this with care, andmake sure to benchmark your application, as a point can come where diskI/O will negate positive gains by caching. This requires a writable cache directory to be really writable (0777).
Memcached Caching
Multiple Memcached servers can be specified in the cache configuration file.
For more information on Memcached, please seehttp://php.net/memcached.
WinCache Caching
Under Windows, you can also utilize the WinCache driver.
For more information on WinCache, please seehttp://php.net/wincache.
Redis Caching
Redis is an in-memory key-value store which can operate in LRU cache mode.To use it, you need Redis server and phpredis PHP extension.
Config options to connect to redis server must be stored in the app/Config/redis.php file.Available options are:
- $config['host'] = '127.0.0.1';
- $config['password'] = NULL;
- $config['port'] = 6379;
- $config['timeout'] = 0;
- $config['database'] = 0;
For more information on Redis, please seehttp://redis.io.
Dummy Cache
This is a caching backend that will always ‘miss.’ It stores no data,but lets you keep your caching code in place in environments that don’tsupport your chosen cache.