A caching library implementing PSR-6 and PSR-16 interfaces
Go to file
Timothy J. Warren 00e709181f
All checks were successful
Gitea - aviat/banker/pipeline/head This commit looks good
Test PHP 8.2 on Jenkins
2023-02-03 14:11:39 -05:00
build Update version in PHP header comments 2021-12-02 15:30:20 -05:00
src Some code tweaks and fixes 2023-02-03 14:01:25 -05:00
tests Some code tweaks and fixes 2023-02-03 14:01:25 -05:00
.editorconfig First commit 2016-08-31 12:18:46 -04:00
.gitignore First commit 2016-08-31 12:18:46 -04:00
CHANGELOG.md Move changes to version 4, as it hasn't been released yet 2021-12-02 15:29:29 -05:00
composer.json Some code tweaks and fixes 2023-02-03 14:01:25 -05:00
Jenkinsfile Test PHP 8.2 on Jenkins 2023-02-03 14:11:39 -05:00
phpdoc.dist.xml First commit 2016-08-31 12:18:46 -04:00
phpstan.neon Add PHPStan checks to CI 2021-02-18 13:27:07 -05:00
README.md Update README with simple usage example 2020-05-07 19:43:01 -04:00
RoboFile.php Implement PSR-16 2020-05-07 17:17:03 -04:00

Banker

A Caching library implementing the PSR-6 and PSR-16 interfaces for several common cache backends

Cache Backends

  • Apcu
  • Memcached
  • Redis
  • Null - no persistence

Basic Usage (SimpleCache/PSR-16)

<?php
// $config is the configuration array
// $logger is an optional psr/log compatible logger
$cache = new Aviat\Banker\Teller($config, $logger);

// Get a value from the cache, returning $defaultValue
// if the value doesn't exist in the cache
$value = $cache->get($key, $defaultValue);

// Save a new value at the specified key
$saved = $cache->set($key, 'newValue');

Basic Usage (Pool/PSR-6)

<?php
// Create the pool
// $config is the configuration array
// $logger is an optional psr/log compatible logger
$pool = new Aviat\Banker\Pool($config, $logger);

// Grab an item from the cache
$item = $pool->getItem('foo');

// Was there a cache hit?
if ( ! $item->isHit())
{
	// ... Generation of value to cache
	$item->set($value);
	$item->save();
}
else
{
	$value = $item->get();
}

Configuration / Connection array

The config array passed to the Pool class constructor determines which server to connect to. Regardless of the backend, the basic structure is like so:

<?php
$config = [
	'driver' => 'null', // null, apcu, redis, memcached
	'connection' => [
		// Optional (For some drivers):
		// driver setup, see below for the structure for each
		// driver
	],
	'options' => [
		// Optional:
		// Set additional driver-specific options, like persistence for
		// Memcached, or a prefix for Redis keys
	]
];

Below are the connection arrays for each backend:

Memcached:

<?php
$config['connection'] = [
	'host' => 'localhost', // hostname or socket
	'port' => 11211,       // Port needs to be 0 if socket
	'persistent' => false, // Use persistent connection
];

Redis: See Predis documentation. An empty array will connect to localhost on port 6379.

Null, Apcu: No connection parameters