2016-08-31 12:18:46 -04:00
|
|
|
# Banker
|
|
|
|
|
2020-05-07 19:43:01 -04:00
|
|
|
A Caching library implementing the PSR-6 and PSR-16 interfaces for several common cache backends
|
2017-03-01 13:07:31 -05:00
|
|
|
|
2016-09-06 20:57:24 -04:00
|
|
|
## Cache Backends
|
2017-01-17 12:36:34 -05:00
|
|
|
* Apcu
|
2016-09-06 20:57:24 -04:00
|
|
|
* Memcached
|
|
|
|
* Redis
|
|
|
|
* Null - no persistence
|
|
|
|
|
2020-05-07 19:43:01 -04:00
|
|
|
### Basic Usage (SimpleCache/PSR-16)
|
|
|
|
|
|
|
|
```php
|
|
|
|
<?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)
|
2016-09-06 20:57:24 -04:00
|
|
|
```php
|
2016-09-07 11:01:07 -04:00
|
|
|
<?php
|
2016-09-06 20:57:24 -04:00
|
|
|
// Create the pool
|
2016-09-07 11:01:07 -04:00
|
|
|
// $config is the configuration array
|
|
|
|
// $logger is an optional psr/log compatible logger
|
2016-09-06 20:57:24 -04:00
|
|
|
$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
|
|
|
|
|
2020-05-07 19:43:01 -04:00
|
|
|
The config array passed to the Pool class constructor determines
|
|
|
|
which server to connect to. Regardless of the backend, the basic
|
2016-09-06 20:57:24 -04:00
|
|
|
structure is like so:
|
|
|
|
|
|
|
|
```php
|
2016-09-07 11:01:07 -04:00
|
|
|
<?php
|
|
|
|
$config = [
|
2018-11-15 16:37:50 -05:00
|
|
|
'driver' => 'null', // null, apcu, redis, memcached
|
2016-09-06 20:57:24 -04:00
|
|
|
'connection' => [
|
2017-02-28 16:44:02 -05:00
|
|
|
// Optional (For some drivers):
|
2016-09-06 20:57:24 -04:00
|
|
|
// 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
|
|
|
|
]
|
2016-09-07 11:01:07 -04:00
|
|
|
];
|
2016-09-06 20:57:24 -04:00
|
|
|
```
|
|
|
|
|
|
|
|
Below are the connection arrays for each backend:
|
|
|
|
|
2018-11-15 16:37:50 -05:00
|
|
|
Memcached:
|
2016-09-06 20:57:24 -04:00
|
|
|
```php
|
2016-09-07 11:01:07 -04:00
|
|
|
<?php
|
|
|
|
$config['connection'] = [
|
2016-09-06 20:57:24 -04:00
|
|
|
'host' => 'localhost', // hostname or socket
|
|
|
|
'port' => 11211, // Port needs to be 0 if socket
|
|
|
|
'persistent' => false, // Use persistent connection
|
2016-09-07 11:01:07 -04:00
|
|
|
];
|
2016-09-06 20:57:24 -04:00
|
|
|
```
|
|
|
|
|
|
|
|
Redis:
|
|
|
|
See [Predis](https://github.com/nrk/predis#connecting-to-redis) documentation. An empty array will connect to localhost on port 6379.
|
|
|
|
|
2017-01-17 12:36:34 -05:00
|
|
|
Null, Apcu:
|
2016-09-06 20:57:24 -04:00
|
|
|
No connection parameters
|