bravo3 / cache
A PHP 5.4 cache interface and various implementations including Redis and Bravo3/ORM
Installs: 7 593
Dependents: 2
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 1
Open Issues: 0
Requires
- php: >=5.4.0
- psr/log: ~1.0
Requires (Dev)
- bravo3/orm: ^0.5.1
- phpunit/phpunit: >=4.0.0
- predis/predis: ^1.0.3
Suggests
- bravo3/orm: For Bravo3/ORM support
- predis/predis: For Redis support
This package is not auto-updated.
Last update: 2024-12-17 03:04:29 UTC
README
This is a PHP 5.4 caching interface with implementations for common key/value storage engines.
PSR Proposal
The interfaces in this library abide by the current PSR-6 draft for caching interfaces. It should be known that should PHP-FIG adopt a PSR standard for caching interfaces, the interfaces in this library will be replaced with the PSR standard.
More info:
Subject To Change
The approach taken follows the 'strong item' or 'repository model' as per the above meta documentation. Should the PSR standard pass, there will be minimal change. Should an alternative approach pass, much of this library - and any implementations based on the interfaces - will need to be refactored.
A new major version number will be applied to this library when PSR-6 passes.
Usage
Basic usage:
$pool = new RedisCachePool('tcp://10.0.0.1:6379');
$item = $pool->get('foo');
$item->get(); // Pull the value from the database
$item->isHit(); // Check if the retrieval was a cache hit
$item->exists(); // Check if the entry exists in the datbase (MAY avoid actually retrieving the value)
$item->set('bar'); // Save to cache
$item->delete(); // Remove from cache
$items = $pool->getItems(['test1', 'test2', 'test3']); // Get a collection of items
Using a TTL can be done with a \DateTime
object or a integer offset in seconds:
$item = $pool->getItem('foo');
$dt = new \DateTime();
$dt->modify('+10 seconds');
$item->set('bar', $dt); // Set TTL with a \DateTime object
$item->set('bar', null); // Clear the TTL, item never expires
$item->set('bar', 10); // Set the TTL to 10 seconds
Implementations
Ephemeral
The ephemeral implementation is a single-session storage that loses it's data when the session ends. This is useful for testing or a default implementation in lack of a real cache storage device. Or if you just really don't care about the volatility of your data.
Redis
Redis support is fully integrated via the Predis library.
To enable Redis support:
composer require predis/predis
Bravo3/ORM
You can use any Bravo3/ORM driver to connect a cache connection, this is useful to maintain a single source to your database.
To enable ORM support:
composer require bravo3/orm