| Recommend this page to a friend! |
| Info | Reputation | Support forum | Blog | Links |
| Last Updated | Ratings | Unique User Downloads | Download Rankings | |||||
| 2025-07-28 (Less than 1 hour ago) | Not yet rated by the users | Total: 104 | All time: 9,753 This week: 455 | |||||
| Version | License | PHP version | Categories | |||
| cacheone 1.0.2 | GNU Lesser Genera... | 5 | Networking, PHP 5, Cache |
CacheOne is a cache class of service for php. It supports Redis, Memcache, PDO 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.
use 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);
<!-- TOC --> * CacheOne * Example * Table of Contents * Definitions * Creating a new instance of CacheOne * Storing a value * Getting a value * setDefaultTTL * Pushing and Popping values form an array
* push
* unshift
* pop
* shift
* invalidate a key * invalidate a group * invalidate all * setSerializer($serializer) * getSerializer(); * Select a database (Redis/PdoOne) * CLI
* Example REDIS
Creates a new connection using Redis (Redis is an on memory cache library)
use eftec\CacheOne;
include "../vendor/autoload.php";
$cache=new CacheOne("redis","127.0.0.1","",6379);
Creates a new connection using apcu (APCU is an extension for PHP to cache content)
use eftec\CacheOne;
include "../vendor/autoload.php";
$cache=new CacheOne("apcu");
Creates a new connection using PdoOne (PdoOne is a library to connect to the database using PDO)
use eftec\PdoOne;
use eftec\CacheOne;
include "../vendor/autoload.php";
$pdo=new PdoOne('mysql','127.0.0.1','root','abc.123','travisdb',false,null,1,'KVTABLE');
$pdo->logLevel=3; // optional, if you want to debug the errors.
$pdo->open();
// $pdo->createTableKV(); // you should create the key-value table if it doesn't exist.
$cache=new CacheOne("pdoone"); // the instance $pdo is injected automatically into CacheOne.
or you could use to create a PdoOne instance:
$cache=new CacheOne(
"pdoone",
['mysql','127.0.0.1','root','abc.123','travisdb',false,null,1,'KVTABLA']
);
Creates a new connection using memcache (Memcache is an old, but it is still a functional memory cache server)
use eftec\CacheOne;
include "../vendor/autoload.php";
$cache=new CacheOne("memcache","127.0.0.1"); // minimum configuration
$cache=new CacheOne("memcache","127.0.0.1",11211,'schema'); // complete configuration
Creates a new connection using the class DocumentOne (file system)
This example requires the library eftec/documentstoreone
use eftec\CacheOne;
include "../vendor/autoload.php";
$cache=new CacheOne("documentone",__DIR__."/base","schema"); // folder /base/schema must exists
The library DocumentStoreOne works with concurrency.
or creating a new connection, using redis, memcache, apcu or documentone (it takes the first available)
use eftec\CacheOne;
include "../vendor/autoload.php";
$cache=new CacheOne("auto");
> function set($group, $key, $value, $duration = 1440): bool
It stores a value inside a group and a key. It returns false if the operation failed.
> Note: The duration is ignored by "documentone"
$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.
> 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
$result=$cache->setDefaultTTL(50); // it sets the default time to live. "documentone" one uses it.
$result=$cache->getDefaultTTL(); // it gets the time to live
It pushes (adds) a new value at the end of the array. If the array does not exist, then it is created a new array. This command allows to limit the numbers of elements of the array.
Syntax: > push($groups, $key, $value, $duration = null, $limit = 0, $limitStrategy = 'shiftold') : bool
// cart could be [1,2,3]
$cache->push('','cart',4,2000); // it adds a new element into the cart unlimitely cart is [1,2,3,4]
$cache->push('','cart',5,2000,4,'shiftold'); // it limits the cart to 20 elements, pop old item if req. cart is [2,3,4,5]
$cache->push('','cart',6,2000,4,'nonew'); // if the cart has 20 elements, then it doesn't add $item. cart now is [2,3,4,5]
It unshift (add) a new value at the beginner of the array. If the array does not exist, then it is created a new array. This command allows to limit the numbers of elements of the array.
Syntax:
> unshift($groups, $key, $value, $duration = null, $limit = 0, $limitStrategy = 'popold') : bool
// cart could be [1,2,3]
$cache->unshift('','cart',4,2000); // it adds a new element into the cart unlimitely cart is [4,1,2,3]
$cache->unshift('','cart',5,2000,4,'shiftold'); // it limits the cart to 20 elements, pop old item if req. cart is [2,3,4,5]
$cache->unshift('','cart',6,2000,4,'nonew'); // if the cart has 20 elements, then it doesn't add $item. cart now is [2,3,4,5]
It pops (extract) a value at the end of the array. If the value does not exist then it returns $defaultValue The original array is modified removing the last element of the array.
Syntax:
> pop($group, $key, $defaultValue = false, $duration = null) : mixed
// cart could be [1,2,3,4];
$element=$this->pop('','cart'); // now cart is [1,2,3] and $element is 4
It shifts (extract) a value at the beginner of the array. If the value does not exist then it returns $defaultValue The original array is modified removing the last element of the array.
Syntax:
> pop($group, $key, $defaultValue = false, $duration = null) : mixed
// cart could be [1,2,3,4];
$element=$this->shift('','cart'); // now cart is [2,3,4] and $element is 1
> 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.
> invalidateGroup($group): bool
It invalidates every key(s) inside a group of groups. It also cleans 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
> invalidateAll()
It invalidates all cache.
In redis, it deletes the current schema. If not schema, then it deletes all Redis
In memcached and <b>apcu</b>, it deletes all cache
In <b>documentone</b> it deletes the content of the database-folder
$cache->invalidateAll();
It sets how the values are serialized. By default, it's PHP.
$cache->setSerializer('php'); // set the serializer to php (default value). It is fastest but it uses more space.
$cache->setSerializer('json-array'); // set the serializer to json-array. It uses fewer space than PHP however it is a bit slower.
$cache->setSerializer('json-object'); // set the serializer to json-object.
$cache->setSerializer('none'); // set the serializer to none (the value must be serialized)
Get then how the values are serialized.
$type=$cache->getSerializer(); // get php,json-array,json-object or none
> select($dbindex)
It selects a different database. By default, the database is 0.
$cache->select(1);
$cache->select('table'); // PdoOne
This library also has an interactive CLI.In this CLI, you can create the configuration, test it, load and save.

To open it, you must run the next script:
php vendor/bin/cacheonecli
# or (windows)
vendor/bin/cacheonecli.bat


The configuration will be saved as: c1.config.php. It is a configuration file that you can include or copy and paste in your code
<?php // eftec/CliOne(1.28) PHP configuration file (date gen: 2023-04-08 10:19). DO NOT EDIT THIS FILE
/
* It is a configuration file
*/
$cacheOneConfig=[
'type' => 'redis',
'cacheserver' => '127.0.0.1',
'schema' => '',
'port' => '6379',
'user' => NULL,
'password' => NULL,
];
example
include "c1.config.php";
$cache=CacheOne::factory($cacheOneConfig);
Dual license, Commercial and MIT License. Copyright Jorge Castro Castillo
| File | Role | Description | ||
|---|---|---|---|---|
| Data | Auxiliary data | |||
| Lic. | License text | |||
| Data | Auxiliary data | |||
| Doc. | Documentation | |||
| / | lib |
| File | Role | Description | ||
|---|---|---|---|---|
| |
Class | Class source | ||
| |
Example | Example script | ||
| |
Class | Class source | ||
| / | lib | / | provider |
| File | Role | Description |
|---|---|---|
| |
Class | Class source |
| |
Class | Class source |
| |
Class | Class source |
| |
Class | Class source |
| |
Class | Class source |
| |
Class | Class source |
| / | test |
| File | Role | Description | ||
|---|---|---|---|---|
| |
Aux. | Auxiliary script | ||
| |
Class | Class source | ||
| The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page. |
| Version Control | Unique User Downloads | Download Rankings | |||||||||||||||
| 100% |
|
|
| Applications that use this package |
If you know an application of this package, send a message to the author to add a link here.