. */ namespace Doctrine\Common\Cache; use Redis; /** * Redis cache provider. * * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link www.doctrine-project.org * @since 2.2 * @author Osman Ungur */ class RedisCache extends CacheProvider { /** * @var Redis */ private $redis; /** * Sets the redis instance to use. * * @param Redis $redis */ public function setRedis(Redis $redis) { $redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_IGBINARY); $this->redis = $redis; } /** * Gets the redis instance used by the cache. * * @return Redis */ public function getRedis() { return $this->redis; } /** * {@inheritdoc} */ protected function doFetch($id) { return $this->redis->get($id); } /** * {@inheritdoc} */ protected function doContains($id) { return $this->redis->exists($id); } /** * {@inheritdoc} */ protected function doSave($id, $data, $lifeTime = 0) { $result = $this->redis->set($id, $data); if ($lifeTime > 0) { $this->redis->expire($id, $lifeTime); } return $result; } /** * {@inheritdoc} */ protected function doDelete($id) { return $this->redis->delete($id); } /** * {@inheritdoc} */ protected function doFlush() { return $this->redis->flushDB(); } /** * {@inheritdoc} */ protected function doGetStats() { $info = $this->redis->info(); return array( Cache::STATS_HITS => false, Cache::STATS_MISSES => false, Cache::STATS_UPTIME => $info['uptime_in_seconds'], Cache::STATS_MEMORY_USAGE => $info['used_memory'], Cache::STATS_MEMORY_AVAILIABLE => false ); } }