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:
ttloptional default: 0 (unlimited)cache_not_found_keysoptional default: false
Requires APC extension or APCu extension.
Adapter options:
ttloptional default: 0 (unlimited)cache_not_found_keysoptional default: false
Requires WinCache extension.
Adapter options:
serversarray of memcache servers. format: [[, , ], [, , ], ...]optionsarray of memcache options. format: [<option_name1> => , <option_name2> => , ...]connection_persistentoptional default: falsepool_sizeoptional default: 1 (only for persistent connections)ttloptional default: 0 (unlimited)cache_not_found_keysoptional default: false
Requires Memcached extension.
Adapter options:
hostoptional default: 127.0.0.1portoptional default: 6379databaseoptional default: 0 (int)passwordoptional default: null (no password)connection_persistentoptional default: falsettloptional default: 0 (unlimited)cache_not_found_keysoptional default: false
More information on the available parameters at the Predis documentation.
Adapter options:
hostoptional default: 127.0.0.1portoptional default: 6379databaseoptional default: 0 (int)passwordoptional default: null (no password)connection_persistentoptional default: falsepool_sizeoptional default: 1 (only for persistent connections)timeoutoptional default: 0 (unlimited)read_timeoutoptional default: 0 (unlimited)retry_intervaloptional default: 0 (value in milliseconds)ttloptional default: 0 (unlimited)cache_not_found_keysoptional default: falseserializeroptional default: nonenonedon't serialize dataphpuse built-in serialize/unserializeigbinaryuse igBinary serialize/unserialize (requiresigbinaryextension)
More information on the available parameters at the phpredis documentation.
Requires redis extension.
Using PDO.
Adapter options:
hostportdbnameusernamepasswordtable_nameensure_table_createdoptional default: falsecache_not_found_keysoptional 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:
hostsaerospike_namespaceoptional default: testpersistentoptional default: trueoptionsoptional default: []ttloptional default: 0 (unlimited)cache_not_found_keysoptional 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.

