linio / cache
Provides a multi-layered caching abstraction
Installs: 29 589
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 49
Forks: 7
Open Issues: 1
pkg:composer/linio/cache
Requires
- php: ^8.1
- doctrine/inflector: ^2.0
- linio/database: ^5.1.0
- linio/util: ^4.0
- predis/predis: ^1.0 || ^2.0
- psr/log: ^1.0.1 || ^2.0 || ^3.0
Requires (Dev)
- contorion/aerospike-stub: 1.0.*
- friendsofphp/php-cs-fixer: ^3.6
- phpspec/prophecy-phpunit: ^1.1
- phpstan/phpstan: ^1.9
- phpunit/phpunit: ^8.5
Suggests
- ext-aerospike: Allows usage of Aerospike adapter
- ext-phpiredis: Allows faster serialization and deserialization of the Redis protocol
- ext-redis: Allows usage of phpredis adapter
- dev-master
- v5.1.1
- 5.1.0
- 5.0.1
- 5.0.0
- 4.0.2
- 4.0.1
- 4.0.0
- 3.0.1
- 3.0.0
- 2.2.5
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-chore/CC-1707-add-support-to-predis-2
- dev-feat/add-ttl-to-set
- dev-test/remove-deprecations-and-code-style
- dev-master-legacy
- dev-chore/support-linio-util-4.0
- dev-dependabot/composer/friendsofphp/php-cs-fixer-tw-2.16or-tw-3.0
- dev-dependabot/add-v2-config-file
- dev-update-doctrine-inflector-v2
- dev-update-doctrine-inflector
- dev-add-validation-for-bool-results-in-phpredis
- dev-maintenance
- dev-dependabot/composer/phpunit/phpunit-tw-8.5or-tw-9.0
This package is auto-updated.
Last update: 2025-10-16 22:13:38 UTC
README
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
<?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');
Methods
get
<?php /** * @param string $key * @return string value */ public function get($key); $adapter->get('foo');
getMulti
<?php /** * @param array $keys * @return string[] */ public function 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 */ 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
setMulti
<?php /** * @param array $keys * @return bool */ public function setMulti(array $data); $adapter->setMulti(['foo' => 'bar', 'fooz' => 'baz']);
delete
<?php /** * @param string $key * @return bool */ public function delete($key); $adapter->delete('foo');
deleteMulti
<?php /** * @param array $keys * @return bool */ public function deleteMulti(array $keys); $adapter->deleteMulti(['foo', 'fooz']);
contains
<?php /** * @param string $key * @return bool */ public function contains($key); $adapter->contains('foo');
flush
<?php /** * @return bool */ public function flush(); $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:
- serversarray of memcache servers. format: [[, , ], [, , ], ...]
- optionsarray 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- nonedon't serialize data
- phpuse built-in serialize/unserialize
- igbinaryuse igBinary serialize/unserialize (requires- igbinaryextension)
 
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.