clowdy / multi-memcached
Multiple memcached connection handler for Laravel and elasticache support
Installs: 25 793
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 6
Forks: 6
Open Issues: 0
Requires
- php: >=5.4.0
- illuminate/cache: ~4.2
- illuminate/support: ~4.2
This package is not auto-updated.
Last update: 2024-11-21 15:27:25 UTC
README
Multiple memcached connection handler for Laravel cache and elasticache support. There is also support for getMulti
, putMulti
, foreverMulti
and forgetMulti
specifically for memcached only.
The cache driver can not be swapped if you make use of the additional getMulti
, putMulti
, foreverMulti
or forgetMulti
functions or the get
, put
, forever
, forget
with arrays. They are specific for memcached only!
Installation
You can install the package using the Composer package manager:
{ "require": { "clowdy/multi-memcached": "0.2.*" } }
Update app/config/app.php
with the new service provider.
'providers' => array( ... //'Illuminate\Cache\CacheServiceProvider', 'Clowdy\Cache\CacheServiceProvider', ... )
Configuration
The package makes use of the existing memcached configs in app/config/cache.php
, with a slightly modified structure.
Example:
... 'memcached' => array( 'default' => 'data1', 'connections' => array( // cluster 'data1' => array( array('host' => '127.0.0.1', 'port' => 11211, 'weight' => 100), array('host' => '127.0.0.1', 'port' => 11212, 'weight' => 100) ), // single node 'data2' => array( array('host' => '127.0.0.1', 'port' => 11213, 'weight' => 100), ), // elasticache cluster 'data3' => array( 'elasticache' => true 'servers' => array( array('host' => 'memcached.cache.amazonaws.com', 'port' => 11211, 'weight' => 100), ), ) ) ),
Any other providers in Laravel that make use of memcached will use the default connection. For example the session
provider using the memcached
driver will use the default connection.
Example Usage
Cache::connection('data1')->get('somekey'); // or you can omit the connection method to use the default connection. Cache::get('somekey'); // also perform a multi get using an array Cache::get(['key1', 'key2']);
or
<?php namespace Some\App; use Illuminate\Cache\Repository as CacheRepository; class SomeClass { protected $cache; public function __construct(CacheRepository $cache) { $this->cache = $cache; } public function update($data) { $this->cache->put('key', $data, 60); $this->update2($data); } public function update2($data) { $this->cache->connection('data2')->put('key', $data, 60); $this->update3(['key' => $data]); } public function update3(array $data) { $this->cache->connection('data3')->put(array_keys($data), array_values($data), 60); // or $this->cache->connection('data3')->putMulti($data, 60); } }