Download the PHP package eftec/cacheone without Composer
On this page you can find all versions of the php package eftec/cacheone. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download eftec/cacheone
More information about eftec/cacheone
Files in eftec/cacheone
Package cacheone
Short Description A Cache library with minimum dependency
License MIT
Homepage https://github.com/EFTEC/CacheOne
Informations about the package cacheone
CacheOne
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.
Example
Table of Contents
- 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
- Version
- License
Definitions
Creating a new instance of CacheOne
Creates a new connection using Redis (Redis is an on memory cache library)
Creates a new connection using apcu (APCU is an extension for PHP to cache content)
Creates a new connection using PdoOne (PdoOne is a library to connect to the database using PDO)
or you could use to create a PdoOne instance:
Creates a new connection using memcache (Memcache is an old, but it is still a functional memory cache server)
Creates a new connection using the class DocumentOne (file system)
This example requires the library eftec/documentstoreone
The library DocumentStoreOne works with concurrency.
or creating a new connection, using redis, memcache, apcu or documentone (it takes the first available)
Storing a value
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"
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.
setDefaultTTL
Pushing and Popping values form an array
push
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
- $Limit is used to limit the number maximum of elements of the array, if zero, then it does not limit the elements.
- $LimitStrategy is used to determine what to do when we are adding a new element and the limit has been reached, shiftold removes the first element of the array, nonew does not allow to add a new element, popold removes the latest element of the array (if the limit has been reached).
unshift
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
- $Limit is used to limit the number maximum of elements of the array, if zero, then it does not limit the elements.
- $LimitStrategy is used to determine what to do when we are adding a new element and the limit has been reached, shiftold removes the first element of the array, nonew does not allow to add a new element, popold removes the latest element of the array (if the limit has been reached).
pop
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
shift
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
invalidate a key
function invalidate($group = '', $key = ''): bool
It invalidates a specific key. If the operation fails, then it returns false
invalidate 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.
invalidate all
invalidateAll()
It invalidates all cache.
In redis, it deletes the current schema. If not schema, then it deletes all Redis
In memcached and apcu, it deletes all cache
In documentone it deletes the content of the database-folder
setSerializer($serializer)
It sets how the values are serialized. By default, it's PHP.
getSerializer();
Get then how the values are serialized.
Select a database (Redis/PdoOne)
select($dbindex)
It selects a different database. By default, the database is 0.
CLI
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:
Example REDIS
- Open the CLI
- go to menu cache
- select redis
- select yes
- and select the default information
- Once it is done, select test to test the connection
- and finally, save the configuration (select save)
- select yes
- select the filename (c1 in this example)
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
example
Version
- 2.19 (2024-12-08)
- [apcu] solved a problem with get() and the value is not found. It returned false instead of the default value.
- 2.18 (2024-03-02)
- Updating dependency to PHP 7.4. The extended support of PHP 7.2 ended 3 years ago.
- Added more type hinting in the code.
- 2.17
- [composer.json] updated dependency
- [CacheOneCli] now loads a PdoOneCli instance if avaible
- 2.16.1 2023-04-08
- [composer.json] added cacheonecli to the /bin
- [CacheOne] added method factory()
- [CacheOneCli] configuration now uses the variable $cacheOneConfig
- 2.16 2023-04-08
- [CacheOneCli] (1.3) This version breaks dependency with PdoOne. Now, it is optional.
- 2.15 2023-04-07
- [CacheOneCli] Updated to 1.2
- [CacheOne] updated the constructor, so it allows to pass the configuration of PdoOne as an array
- 2.14
- updated dependencies.
- 2.13
- [redis] fixed a problem with redis and get()
- 2.12.4
- [fixed] solved a problem when the cache is not found.
- 2.12.3
- [fixed] solved a problem with invalidateCache()
- 2.12 2022-06-12
- [fixed] CacheOne now it could be injected correctly in any case.
- [new] [redis] In Redis, the $schema is used to set the database (if numeric), or to prefix the values.
- 2.11 2022-03-20
- [fixed] added more type "hinting" (type validation)
- [new] It allows to obtain an instance (if any) of CacheOne using the static method CacheOne::instance()
- [new] It allows to obtain an instance of the provider (PdoOne, DocumentStoreOne, Redis, Memcache) $this->getInstanceProvider()
- 2.10 2022-03-15
- [new] method getRenew() that get a value and renews its duration.
- [update] Provider DocumentOne now works with TTL.
- 2.9 2022-03-12
- Cleared some references and added type hinting to the code.
- In Redis: invalidateAll() does not delete all the server if there is a schema.
- in PdoOne: set() does not crash in PHP 8.1 if the catalog is null.
- 2.8 2022-02-10
- Added a new provider PdoOne (Pdo / Database).
- Dropped support for PHP 7.1 and lower. If you want to use an old version of this library then you can stay with the version 2.7.
- 2.7 2021-06-13
- method get() used by provider, never needed the family/group, so it is removed. It is the last version for 2.7
- 2.6.1 2021-06-12
- changed dependencies in composer.json
- 2.6 2021-06-12
- added the methods push(), pop(), shift() and unshift()
- 2.5 2020-09-20
- Separated provider in different classes. Now it also allows to use the file system (DocumentOne).
- 2.4 2020-09-13
- The code was refactored.
- 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 laster 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
License
Dual license, Commercial and MIT License. Copyright Jorge Castro Castillo