Skip to content

ihor/Cachalot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cachalot

Cachalot (cache a lot) is an easy to use caching library. It supposed to do the only one thing - return cached callback result.

Installation

Define the following requirement in your composer.json file:

"require": {
    "ihor/cachalot": "2.3"
}

Usage

// With Cachalot cache you can easily cache results of different types of functions
$cache = new \Cachalot\ArrayCache();

// built-in functions
$length = $cache->getCached('strlen', ['hello world']); 

// user defined functions
$unique = $cache->getCached('uniqueValues', [[1, 2, 3, 1, 2, 3]]);

// static methods
$result = $cache->getCached(['Calculator', 'subtract'], [1, 2]);

// instance methods
$square = $cache->getCached([new Calculator(), 'square'], [5]);

// anonymous functions
$reason = $cache->getCached($getErrorReason, [], \Cachalot\Cache::ONE_DAY, 'error-reason');

// callable objects
$trimed = $cache->getCached(new Trimmer(), [' hello world ']);

Reference

Cache API

getCached($callback, array $args = array(), $expireIn = 0, $suffix = null, $useSuffixAsKey = false)

Returns cached $callback result

$callback is the function (callable) which results we want to be cached
$args are the arguments passed to the $callback
$expireIn sets cache TTL in seconds
$suffix is needed to avoid collisions when callback is an anonymous function $useSuffixAsKey when true cache suffix will be used as a cache key

$length = $cache->getCached('strlen', ['hello world']);

To have possibility to use Cachalot as a regular caching library when needed it contains classic cache methods

contains($key)

Returns true if cache contains entry with given key

if ($cache->contains('lastVisit')) {
    echo 'This is not the first visit';
}
get($key)

Returns cached value by key or false if there is no cache entry for the given key

if ($lastVisitDate = $cache->get('lastVisit')) {
    echo sprintf('Last visit was at %s', $lastVisitDate);
}
set($key, $value, $expireIn = 0)

Caches value by key. When $expireIn = 0 the value is cached forever

$cache->set('lastVisit', time());
delete($key)

Deletes cache entry by key

$cache->delete('lastVisit');
clear()

Deletes all cache entries

$cache->clear();

Back-ends

Cachalot\ApcCache

Stores data in APC

$cache = new Cachalot\ApcCache();
Cachalot\XcacheCache

Stores data in Xcache

$cache = new Cachalot\XcacheCache();
Cachalot\MemcacheCache

Stores data in Memcached using Memcache PHP extension

$memcache = new \Memcache();
$memcache->connect('unix:///usr/local/var/run/memcached.sock', 0);

$cache = new \Cachalot\MemcacheCache($memcache);
Cachalot\MemcachedCache

Stores data in Memcached using Memcached PHP extension

$memcached = new \Memcached();
$memcached->addServer('/usr/local/var/run/memcached.sock', 0);

$cache = new \Cachalot\MemcachedCache($memcached);
Cachalot\RedisCache

Stores data in Redis

$redis = new \Redis();
$redis->connect('127.0.0.1');
$redis->select(1);

$cache = new \Cachalot\RedisCache($redis);
Cachalot\CouchbaseCache

Stores data in Couchbase using Couchbase PHP SDK 1.x

$couchbase = new \Couchbase('127.0.0.1', '', '', 'default');

$cache = new \Cachalot\CouchbaseCache($couchbase);
Cachalot\Couchbase2Cache

Stores data in Couchbase using Couchbase PHP SDK 2.x

$cluster = new \CouchbaseCluster('couchbase://localhost');
$bucket = $cluster->openBucket('default');

$cache = new \Cachalot\Couchbase2Cache($bucket);
Cachalot\ArrayCache

Stores data in PHP array

$cache = new \Cachalot\ArrayCache();
Cachalot\BlackholeCache

Never stores any data

$cache = new \Cachalot\BlackholeCache();

About

Caching rethought – cache a lot in a proper way.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy