Linio Cache is yet another component of the Linio Framework. It aims to abstract caching by supporting multiple adapters.
The recommended way to install Linio Cache is through composer.
{
"require": {
"linio/cache": "dev-master"
}
}
To run the test suite, you need install the dependencies via composer, then run PHPUnit.
$ composer install
$ phpunit
It is now possible (v.1.0.9) to cache not found keys in upper level adapters of the adapter stack. The configuration option cache_not_found_keys
can be set at the adapter level.
Note that this option, obviously, does not apply to the last level of the cache hierarchy.
<?php
use \Linio\Component\Cache\CacheService;
$container['cache'] = new CacheService([
'namespace' => 'mx',
'layers' => [
0 => [
'adapter_name' => 'array',
'adapter_options' => [
'cache_not_found_keys' => true,
'encoder' => 'json',
],
],
1 => [
'adapter_name' => 'apc',
'adapter_options' => [
'ttl' => 3600,
],
],
2 => [
'adapter_name' => 'redis',
'adapter_options' => [
'host' => 'localhost',
'port' => 6379,
'ttl' => 0,
'encoder' => 'serial',
],
],
],
]);
$container->setLogger($container['logger']);
Note that must provide an adapter name and an array of options. Each adapter has different configuration options.
To start setting data:
<?php
$app['cache.service']->set('foo', 'bar');
<?php
/**
* @param string $key
* @return string value
*/
public function get($key);
$adapter->get('foo');
<?php
/**
* @param array $keys
* @return string[]
*/
public function getMulti(array $keys);
$adapter->getMulti(['foo', 'nop']);
<?php
/**
* @param string $key
* @param string $value
* @param ?int $ttl Time To Live; store value in the cache for ttl seconds.
* This ttl overwrites the configuration ttl of the adapter
* @return bool
*/
public function set(string $key, $value, ?int $ttl = null);
$adapter->set('foo', 'bar');
$adapter->set('foo', 'bar', 60); // store bar in the cache for 60 seconds
<?php
/**
* @param array $keys
* @return bool
*/
public function setMulti(array $data);
$adapter->setMulti(['foo' => 'bar', 'fooz' => 'baz']);
<?php
/**
* @param string $key
* @return bool
*/
public function delete($key);
$adapter->delete('foo');
<?php
/**
* @param array $keys
* @return bool
*/
public function deleteMulti(array $keys);
$adapter->deleteMulti(['foo', 'fooz']);
<?php
/**
* @param string $key
* @return bool
*/
public function contains($key);
$adapter->contains('foo');
<?php
/**
* @return bool
*/
public function flush();
$adapter->flush();
This cache does not have any persistence between requests.
Not recommended to be used in production environments.
Adapter options:
ttl
optional default: 0 (unlimited)cache_not_found_keys
optional default: false
Requires APC extension or APCu extension.
Adapter options:
ttl
optional default: 0 (unlimited)cache_not_found_keys
optional default: false
Requires WinCache extension.
Adapter options:
servers
array of memcache servers. format: [[, , ], [, , ], ...]options
array of memcache options. format: [<option_name1> => , <option_name2> => , ...]connection_persistent
optional default: falsepool_size
optional default: 1 (only for persistent connections)ttl
optional default: 0 (unlimited)cache_not_found_keys
optional default: false
Requires Memcached extension.
Adapter options:
host
optional default: 127.0.0.1port
optional default: 6379database
optional default: 0 (int)password
optional default: null (no password)connection_persistent
optional default: falsettl
optional default: 0 (unlimited)cache_not_found_keys
optional default: false
More information on the available parameters at the Predis documentation.
Adapter options:
host
optional default: 127.0.0.1port
optional default: 6379database
optional default: 0 (int)password
optional default: null (no password)connection_persistent
optional default: falsepool_size
optional default: 1 (only for persistent connections)timeout
optional default: 0 (unlimited)read_timeout
optional default: 0 (unlimited)retry_interval
optional default: 0 (value in milliseconds)ttl
optional default: 0 (unlimited)cache_not_found_keys
optional default: falseserializer
optional default: nonenone
don't serialize dataphp
use built-in serialize/unserializeigbinary
use igBinary serialize/unserialize (requiresigbinary
extension)
More information on the available parameters at the phpredis documentation.
Requires redis extension.
Using PDO.
Adapter options:
host
port
dbname
username
password
table_name
ensure_table_created
optional default: falsecache_not_found_keys
optional default: false
The ensure_table_created
is used to ensure the cache table exists in the database. This option has a significant performance impact.
Not recommended to be used in production environments.
Adapter options:
hosts
aerospike_namespace
optional default: testpersistent
optional default: trueoptions
optional default: []ttl
optional default: 0 (unlimited)cache_not_found_keys
optional default: false
For the Aerospike adapter, the aerospike_namespace property will be used as the namespace in Aerospike, and the namespace configuration in the CacheService will be used as the set in Aerospike.
Requires Aerospike Extension.