|  Download CacheOneCacheOne is a cache class of service for php. It supports Redis, Memcache and/or APCU. Unlikely other cache libraries, this library is based in group (optional). So it's suitable to invalidate a single key 
or an entire group of elements.    [  ]()
[  ]()
[  ]()
[  ]()
 Exampleuse eftec\CacheOne;
include "vendor/autoload.php"; // composer's autoload
$cache=new CacheOne("redis","127.0.0.1","",6379);
$cacheValue=$cache->get('','countries'); // read the cache (if any) otherwise false
if($cacheValue===false) {
    echo "generating a new list of countries..<br>";
    $countries=['USA','Canada','Japan','Chile'];
    $cache->set('','countries',$countries,500); // store into the cache for 500 seconds.
} else {
    echo "read from cache<br>";
    $countries=$cacheValue;
}
var_dump($countries);
 DefinitionsCreating a new instance of CacheOneCreates a new connection using redis use eftec\CacheOne;
include "../vendor/autoload.php";
$cache=new CacheOne("redis","127.0.0.1","",6379);
 Creates a new connection using apcu use eftec\CacheOne;
include "../vendor/autoload.php";
$cache=new CacheOne("apcu");
 Creates a new connection using memcache use eftec\CacheOne;
include "../vendor/autoload.php";
$cache=new CacheOne("memcache","127.0.0.1");
 or creating a new connection, or redis, or memcache or apcu (it takes the first available) use eftec\CacheOne;
include "../vendor/autoload.php";
$cache=new CacheOne("auto");
 Storing a value> function set($group, $key, $value, $duration = 1440): bool It store a value inside a group and a key.
It returns false if the operation failed. $cache->set("group","key1","hello world",500);
$cache->set("group","key2","hola mundo",500);
 Group is optional and it could be used if we need to invalidate (delete) an entire group. Getting a value> function get($group, $key, $defaultValue = false) It gets a value stored in a group (optional) and key. If the
value is not found then it returns false. Note: a false value could be a valid value. $result=$cache->get("group","key1");
$result=$cache->get("","key2");
$result=$cache->get("","key2","not found"); // if not key2 (groupless) then it returns not found 
 invalidate a key> function invalidate($group = '', $key = ''): bool  It invalidates a specific key. If the operation fails, then it returns false $cache->invalidate("group",key1"); // invalidate a key inside a group
$cache->invalidate("",key1"); // invalidate a key without a group.
 invalidate a group> invalidateGroup($group): bool It invalidates every key(s) inside a group of groups.  It also clean the catalog of the group and sets it to an empty array. $cache->invalidateGroup("group"); // invalidate all keys inside group
$cache->invalidateGroup(["group1","group2"]); // invalidate all key inside group1 and group2
 invalidate all> invalidateAll() It invalidates (and delete all the redis repository, memcache or apcu) $cache->invalidateAll(); 
 setSerializer($serializer)It sets how the values are serialized.  By default it's PHP. $cache->setSerializer('php'); // set the serializer to php (default value)
$cache->setSerializer('json-array'); // set the serializer to json-array
$cache->setSerializer('json-object'); // set the serializer to json-object
$cache->setSerializer('none'); // set the serializer to none (the value must be serialized)
 
 getSerializer();Get the how the values are serialized. $type=$cache->getSerializer(); // get php,json-array,json-object or none
 Select a database (Redis)>  select($dbindex)  It selects a different database. By default the database is 0. $cache->select(1);
 Version
2.3.1
* fix: The catalog is always stored as an array, even if the serializer is json-object
2.3
* Added method setSerializer() and getSerializer(). By default CacheOne uses PHP for serialization.
With this feature, it is possible to serialize using json or none
2.2.2 2020-03-13
* Now the duration of the catalog is always lasting than the duration of the key
* Tested the duration and expiration of the cache.
* phpunit now is part of "require-dev" instead of "require"
2.2.1 2020-03-12
* Internal: key names are not store inside the group. The group is store inside the schema
* Internal: The catalog has a duration defined by $cache->catDuration (seconds)
2.2 2020-03-12
* wrappers getCache(),setCache(),invalidateCache()
2.1 2020-03-12
* Unit test
* get() has a default value $defaultValue
* new method invalidateAll()
2.0 2020-03-12 Updated the whole class. Now it works as a single class.
1.4.2 2019-07-30 Added select() to select a different database index. It also adds timeout for the constructor
1.4.1 2018-08-15 Added an internal function that obtains the id.
1.4   2018-09-05 Fixed the groups
1.3.1 2018-06-09 First published version
 LicenseMIT License. Copyright Jorge Castro Castillo |