This project is build upon my first redis open PHP project Redis Adapter. Thanks to it you can use either Predis client or native PHP Redis client in a transparent way.
If PHP redis is installed
$ apt-get install php8.x-redisThese implementations will use it or fallback on Predis client otherwise.
composer require llegaz/redis-cache
composer installPSR-6 implementation is my implementation of Caching Interface from the PHP FIG www.php-fig.org/psr/psr-6
It is far from perfect and as of now (first versions of this implementation) you should be aware that pool expiration are available but by pool's fields expiration are not really !
I will try to test and implement a pool key expiration for Valkey.io in a near future but my first draft is: if you expire a pool key it will expire your entire pool SO BE EXTRA CAUTIOUS WITH THAT !
if you expire a pool key it will expire your entire pool SO BE EXTRA CAUTIOUS WITH THAT !
$cache = new LLegaz\Cache\RedisEnhancedCache();
$cart = new \LLegaz\Cache\Pool\CacheEntryPool($cache);
$user = new \LLegaz\Cache\Pool\CacheEntryPool($cache, 'lolo');
$id = $user->getItem('id');
if ($id->isHit()) {
$item = $cart->getItem('banana:' . $id->get());
$item->set('mixed value');
$cart->save($item);
} else {
$id->set('the lolo id');
$user->save($id);
}foreach ($cart as $item) {
$cart->saveDeferred($item); // items are commited on pool object destruct
}My Simple Cache implementation PHP FIG PSR-16 www.php-fig.org/psr/psr-16
$cache = new LLegaz\Cache\RedisCache();
$cache->selectDatabase(3); // switch database
$cache->set('key', 'mixed value, could be an object or an array');
$cache->get('key'));
$cache->setMultiple(['key1' => [], 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3', 'key4' => 'value4'], 90); // 1m30s expiration on each key
if ($cache->has('key1') && $cache->has('key4')) {
$array = $cache->getMultiple(['key1', 'key1', 'key4']));
var_dump(count($array)); // int(2)
var_dump($array); // array(2) { ["key1"]=> string(6) "value1" ["key4"]=> string(6) "value4" }
}$cache = new LLegaz\Cache\RedisCache();is equivalent to
$cache = new LLegaz\Cache\RedisCache('127.0.0.1');or
$cache = new LLegaz\Cache\RedisCache('localhost', 6379, null, 'tcp', 0, false); // the nulled field is the Redis password in clear text (here no pwd)$cache = new LLegaz\Cache\RedisCache('localhost', 6379, null, 'tcp', 0, true);You're welcome to propose things. I am open to criticism as long as it remains benevolent.
Stay tuned, by following me on github, for new features using predis and PHP Redis.