2017 © Pedro Peláez
 

library stash

Simple PHP caching library

image

phlak/stash

Simple PHP caching library

  • Sunday, July 22, 2018
  • by PHLAK
  • Repository
  • 2 Watchers
  • 3 Stars
  • 64 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 2 Open issues
  • 18 Versions
  • 3 % Grown

The README.md

Stash , (*1)

Lightweight PHP caching library • Created by Chris Kankiewicz (@PHLAK) , (*2)

Join our Community Become a Sponsor One-time Donation
Latest Stable Version Total Downloads License GitHub branch checks state , (*3)


Introduction

Stash is a lightweight PHP caching library supporting multiple, interchangeable caching back-ends and an expressive (Laravel inspired) API., (*4)

Supported caching back-ends:, (*5)

  • File - File-based caching. Stores cache items as files in a directory on disk.
  • Memcached - High-performance, distributed memory object caching system
  • Redis - In-memory data structure store.
  • APCu - PHP's native APC User Cache.
  • Ephemeral - A transient, in-memory array that only exists for the lifetime of the script.

Requirements

Install with Composer

composer require phlak/stash

Initializing the Client

First, import Stash:, (*6)

use PHLAK\Stash;

Then instantiate Stash for your back-end of choice with the named constructor:, (*7)

$stash = Stash\Cache::file($config);
$stash = Stash\Cache::memcached($config);
$stash = Stash\Cache::redis($config);
$stash = Stash\Cache::apcu($config);
$stash = Stash\Cache::ephemeral();

The $config parameter accepts a driver-specific closure for setting configuration options for your chosen driver. Refer to the specific documentation about each driver below for more info. Not all drivers require a configuration function., (*8)

Alternatively you may use the Stash\Cache::make() factory method to instantiate your driver., (*9)

$stash = Stash\Cache::make($driver, $config);

The make() method takes two parameters. The first ($driver) should be one of the following lowercase strings representing your desired caching driver., (*10)

  • apcu
  • ephemeral
  • file
  • memcached
  • redis

The second ($config) is the same driver-specific configuration closure as when using a named constructor. Refer to the specific documentation about each driver below for more info., (*11)


File Cache

The file cache configuration closure must call $this->setCacheDir($path) where $path is a path to a valid directory in which your cache files will be stored., (*12)

$stash = Stash\Cache::file(function (): void {
    $this->setCacheDir('path/to/cache');
});

Memcached

The Memcached configuration closure receives an instance of the Memcached object as it's only parameter, you can use this parameter to connect and configure Memcached. At a minimum you must connect to one or more Memcached servers via the addServer() or addServers() methods., (*13)

Reference the PHP Memcached documentation for additional configuration options., (*14)

$stash = Stash\Cache::memcached(function (Memcached $memcached): void {
    $memcached->addServer('localhost', 11211);
    // $memcached->setOption(Memcached::OPT_PREFIX_KEY, 'some_prefix');
});

Redis

The Redis configuration closure receives an instance of the Redis object as it's only parameter, you can use this parameter to connect to and configure Redis. At a minimum you must connect to one or more Redis servers via the connect() or pconnect() methods., (*15)

Reference the phpredis documentation for additional configuration options., (*16)

$stash = Stash\Cache::redis(function (Redis $redis): void {
    $redis->pconnect('localhost', 6379);
    // $redis->setOption(Redis::OPT_PREFIX, 'some_prefix');
});

APCu

The APCu driver caches items in PHPs APC user cache., (*17)

$stash = Stash\Cache::apcu();

The APCu driver does not require a configuration closure. However, if you wish to set a cache prefix you may pass a configuration closure that calls $this->setPrefix($prefix) where $prefix is a string of your desired prefix., (*18)

$stash = Stash\Cache::apcu(function (): void {
    $this->setPrefix('some_prefix');
});

Ephemeral

The Ephemeral driver caches items in a PHP array that exists in memory only for the lifetime of the script. The Ephemeral driver does not take a configuration closure., (*19)

$stash = Stash\Cache::ephemeral();

Usage

Cacheable::put( string $key , mixed $data [, $minutes = 0 ] ) : bool

Add an item to the cache for a specified duration., (*20)

Examples
// Cache a value for 15 minutes
$stash->put('foo', 'some value', 15);

// Cache a value indefinitely
$stash->put('bar', false);

Cacheable::forever( string $key , mixed $data) : bool

Add an item to the cache permanently., (*21)

Examples
$stash->forever('foo', 'some value');

Cacheable::get( string $key [, $default = false ] ) : mixed

Retrieve an item from the cache., (*22)

Examples
$stash->get('foo');

// Return 'default' if 'bar' doesn't exist
$stash->get('bar', 'default');

Cacheable::has( string $key ) : bool

Check if an item exists in the cache., (*23)

Examples
$stash->has('foo');

Cacheable::remember( string $key , int $minutes , Closure $closure ) : mixed

Retrieve item from cache or, when item does not exist, execute a closure. The result of the closure is then stored in the cache for the specified duration and returned for immediate use., (*24)

Examples
$stash->remember('foo', 60, function() {
    return new FooClass();
});

Cacheable::rememberForever( string $key , Closure $closure ) : mixed

Retrieve item from cache or, when item does not exist, execute a closure. The result of the closure is then stored in the cache permanently., (*25)

Examples
$stash->rememberForever('pokemon', function() {
    return new Pokemon($name, $description);
});

Cacheable::increment( string $key [, int $value = 1 ] ) : mixed

Increment an integer already stored in the cache., (*26)

Examples
// Increment by 1
$stash->increment('foo');

// Increment by 10
$stash->increment('bar', 10);

Cacheable::decrement( string $key [, int $value = 1 ] ) : mixed

Decrement an integer already stored in the cache., (*27)

Examples
 // Decrements by 1
$stash->decrement('foo');

 // Decrements by 10
$stash->decrement('bar', 10);

Cacheable::touch( string|array $key [, int $minutes = 0 ] ) : bool

Extend the expiration time for an item in the cache., (*28)

Examples
 // Extend the expiration by 5 minutes
$stash->touch('foo', 5);

 // Extend the expiration indefinitely
$stash->touch('bar');

// Extend the expiration of multiple items by 5 minutes
$stash->touch(['foo', 'bar', 'baz'], 5);

Cacheable::forget( string $key ) : bool

Remove an item from the cache., (*29)

Examples
$stash->forget('foo');

Cacheable::flush() : bool

Delete all items from the cache., (*30)

Examples
$stash->flush();

Changelog

A list of changes can be found on the GitHub Releases page., (*31)

Troubleshooting

For general help and support join our GitHub Discussions or reach out on Twitter., (*32)

Please report bugs to the GitHub Issue Tracker., (*33)

This project is licensed under the MIT License., (*34)

The Versions

22/07 2018

dev-master

9999999-dev

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

03/04 2018

6.0.0

6.0.0.0

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

03/04 2018

dev-travis-test

dev-travis-test

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

07/02 2018

5.1.0

5.1.0.0

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

17/12 2017

5.0.0

5.0.0.0

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

10/11 2017

dev-travis-apcu-fix

dev-travis-apcu-fix

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

10/10 2017

4.1.0

4.1.0.0

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

10/09 2017

4.0.0

4.0.0.0

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

02/03 2017

dev-travis-php-7.1

dev-travis-php-7.1

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

01/03 2017

3.0.1

3.0.1.0

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

07/10 2016

3.0.0

3.0.0.0

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

06/10 2016

2.0.2

2.0.2.0

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

19/09 2016

2.0.1

2.0.1.0

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

14/06 2016

2.0.0

2.0.0.0

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

25/04 2016

1.3.0

1.3.0.0

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

12/04 2016

1.2.0

1.2.0.0

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

11/04 2016

1.1.0

1.1.0.0

Simple PHP caching library

  Sources   Download

MIT

The Requires

 

The Development Requires

07/04 2016

1.0.0

1.0.0.0

Simple PHP caching library

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires