Skip to content

Repository files navigation

Linio Cache

Latest Stable VersionLicenseBuild StatusScrutinizer Code Quality

Linio Cache is yet another component of the Linio Framework. It aims to abstract caching by supporting multiple adapters.

Install

The recommended way to install Linio Cache is through composer.

{
"require": {
"linio/cache": "dev-master"
}
}

Tests

To run the test suite, you need install the dependencies via composer, then run PHPUnit.

$ composer install
$ phpunit

Cache Not Found Keys

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.

Usage

<?phpuse \Linio\Component\Cache\CacheService;
$container['cache'] = newCacheService([
'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');

Methods

get

<?php/** * @param string $key * @return string value */publicfunctionget($key);
$adapter->get('foo');

getMulti

<?php/** * @param array $keys * @return string[] */publicfunction getMulti(array$keys);
$adapter->getMulti(['foo', 'nop']);

set

<?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 */publicfunction set(string$key, $value, ?int$ttl = null);
$adapter->set('foo', 'bar');
$adapter->set('foo', 'bar', 60); // store bar in the cache for 60 seconds

setMulti

<?php/** * @param array $keys * @return bool */publicfunction setMulti(array$data);
$adapter->setMulti(['foo' => 'bar', 'fooz' => 'baz']);

delete

<?php/** * @param string $key * @return bool */publicfunctiondelete($key);
$adapter->delete('foo');

deleteMulti

<?php/** * @param array $keys * @return bool */publicfunction deleteMulti(array$keys);
$adapter->deleteMulti(['foo', 'fooz']);

contains

<?php/** * @param string $key * @return bool */publicfunctioncontains($key);
$adapter->contains('foo');

flush

<?php/** * @return bool */publicfunctionflush();
$adapter->flush();

Providers

array

This cache does not have any persistence between requests.

Not recommended to be used in production environments.


apc

Adapter options:

  • ttloptional default: 0 (unlimited)
  • cache_not_found_keysoptional default: false

Requires APC extension or APCu extension.


wincache

Adapter options:

  • ttloptional default: 0 (unlimited)
  • cache_not_found_keysoptional default: false

Requires WinCache extension.


memcached

Adapter options:

  • servers array of memcache servers. format: [[, , ], [, , ], ...]
  • options array of memcache options. format: [<option_name1> => , <option_name2> => , ...]
  • connection_persistentoptional default: false
  • pool_sizeoptional default: 1 (only for persistent connections)
  • ttloptional default: 0 (unlimited)
  • cache_not_found_keysoptional default: false

Requires Memcached extension.


redis

Adapter options:

  • hostoptional default: 127.0.0.1
  • portoptional default: 6379
  • databaseoptional default: 0 (int)
  • passwordoptional default: null (no password)
  • connection_persistentoptional default: false
  • ttloptional default: 0 (unlimited)
  • cache_not_found_keysoptional default: false

More information on the available parameters at the Predis documentation.


phpredis

Adapter options:

  • hostoptional default: 127.0.0.1
  • portoptional default: 6379
  • databaseoptional default: 0 (int)
  • passwordoptional default: null (no password)
  • connection_persistentoptional default: false
  • pool_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: false
  • serializeroptional default: none
    • none don't serialize data
    • php use built-in serialize/unserialize
    • igbinary use igBinary serialize/unserialize (requires igbinary extension)

More information on the available parameters at the phpredis documentation.

Requires redis extension.


mysql

Using PDO.

Adapter options:

  • host
  • port
  • dbname
  • username
  • password
  • table_name
  • ensure_table_createdoptional default: false
  • cache_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.


aerospike

Adapter options:

  • hosts
  • aerospike_namespaceoptional default: test
  • persistentoptional default: true
  • optionsoptional 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.


About

Provides a multi-layered caching abstraction

Topics

Resources

Stars

7 stars

Watchers

49 watching

Forks

Releases

Packages

Used by

Contributors

Languages