pop-cache
provides the ability to cache frequently accessed content via several different adapters.
The adapters all share the same interface and are interchangeable. Depending on the server environment
and what's available, an application can use one of the following cache adapters:
- Apc (caching service)
- Memcached (caching service)
- Redis (caching service)
- File (directory on disk)
- Database (database caching)
- Session (short-term caching in session)
pop-cache
is a component of the Pop PHP Framework.
Install pop-cache
using Composer.
composer require popphp/pop-cache
Or, require it in your composer.json file
"require": {
"popphp/pop-cache" : "^4.0.2"
}
Here is a basic example to create a cache object and then save and retrieve some data from it.
The adapter can be passed a "time-to-live" value in seconds (TTL). If set to 0
, then the cached
items will never expire:
use Pop\Cache\Cache;
use Pop\Cache\Adapter\File;
// Passing the file adapter the location on disk and the TTL
$cache = new Cache(new Adapter\File('/path/to/my/cache/dir', 300));
$cache->saveItem('foo', $data);
$data = $cache->getItem('foo');
if $cache->hasItem('foo') { } // Return bool
$cache->deleteItem('foo');
$cache->deleteItems(['foo', 'bar']);
$cache->clear();
Using the APC adapter requires APC to be correctly set up in the environment.
use Pop\Cache\Cache;
use Pop\Cache\Adapter\Apc;
$cache = new Cache(new Apc(300));
Using the Memcached adapter requires Memcached to be correctly set up in the environment.
use Pop\Cache\Cache;
use Pop\Cache\Adapter\Memcached;
$cache = new Cache(new Memcached(300, 'localhost', 11211));
Using the Redis adapter requires Redis to be correctly set up in the environment.
use Pop\Cache\Cache;
use Pop\Cache\Adapter\Redis;
$cache = new Cache(new Redis(300, 'localhost', 6379));
Using the file adapter will simply store the cache data on the local disk.
use Pop\Cache\Cache;
use Pop\Cache\Adapter\File;
$cache = new Cache(new Adapter\File('/path/to/my/cache/dir', 300));
Using the database adapter will require the database to be set up correctly and the use of
the pop-db
component.
use Pop\Cache\Cache;
use Pop\Cache\Adapter\Database;
use Pop\Db\Db;
$cache = new Cache(
new Database(Db::sqliteConnect(['database' => __DIR__ . '/tmp/cache.sqlite']), 300)
);
Using the session adapter will store the cached data in session
use Pop\Cache\Cache;
use Pop\Cache\Adapter\Session;
$cache = new Cache(new Session(300));