linio / cache
Provides a multi-layered caching abstraction
Installs: 29 538
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 52
Forks: 7
Open Issues: 1
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: 2024-12-16 20:26:11 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:
ttl
optional default: 0 (unlimited)cache_not_found_keys
optional default: false
Requires APC extension or APCu extension.
wincache
Adapter options:
ttl
optional default: 0 (unlimited)cache_not_found_keys
optional 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_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.
redis
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.
phpredis
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.
mysql
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.
aerospike
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.