1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
<?php
/**
* Redis Cache Adapter.
*
* @package Silla.IO
* @subpackage Core\Modules\Cache\Adapters
* @author Aleksandar Krastev <aleksandar.krastev@athlonsofia.com>
* @copyright Copyright (c) 2015, Silla.io
* @license http://opensource.org/licenses/GPL-3.0 GNU General Public License, version 3.0 (GPLv3)
*/
namespace Core\Modules\Cache\Adapters;
use Core;
use Predis;
/**
* Class Redis Adapter for caching data.
*/
class Redis implements Core\Modules\Cache\Interfaces\Adapter
{
/**
* Redis client.
*
* @var Predis\Client
*/
private $redisClient;
/**
* Redis constructor.
*/
public function __construct()
{
$connParams = Core\Config()->CACHE['redis'];
$this->redisClient = new Predis\Client($connParams);
$this->redisClient->connect();
}
/**
* Stores value by key.
*
* @param string $key Cache key.
* @param mixed $value Cache value.
* @param integer $expire Expire time, in seconds(optional).
*
* @return boolean
*/
public function store($key, $value, $expire = 0)
{
$value = serialize($value);
if ($expire) {
$this->redisClient->set($key, $value, 'EX', $expire);
} else {
$this->redisClient->set($key, $value);
}
return true;
}
/**
* Fetches stored value by key.
*
* @param string $key Cache key.
*
* @return mixed
*/
public function fetch($key)
{
$response = $this->redisClient->get($key);
return unserialize($response);
}
/**
* Checks if a key-value pair exists.
*
* @param string $key Cache key.
*
* @return boolean
*/
public function exists($key)
{
return $this->redisClient->exists($key);
}
/**
* Removes a key-value pair.
*
* @param string $key Cache key.
*
* @return boolean
*/
public function remove($key)
{
return $this->redisClient->del(array($key));
}
}