Select Git revision
ChildrenOfStructuralElementsIndex.php
Forked from
Stud.IP / Stud.IP
Source project has a limited visibility.
-
Marcus Eibrink-Lunzenauer authoredMarcus Eibrink-Lunzenauer authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
StudipRedisCache.class.php 4.44 KiB
<?php
/**
* Cache implementation using redis.
*
* @author Jan-Hendrik Willms <tleilax+studip@gmail.com>
* @license GPL2 or any later version
* @package studip
* @subpackage cache
* @since Stud.IP 5.0
*/
class StudipRedisCache implements StudipCache
{
use StudipCacheKeyTrait;
private $redis;
/**
* @return string A translateable display name for this cache class.
*/
public static function getDisplayName(): string
{
return _('Redis');
}
/**
* Construct a cache instance.
*
* @param string $hostname Hostname of redis server
* @param int $port Port of redis server
* @param string $auth Optional auth token/password
*/
public function __construct($hostname, $port, string $auth = '')
{
if (!extension_loaded('redis')) {
throw new Exception('Redis extension missing.');
}
$this->redis = new Redis();
$status = $this->redis->connect($hostname, $port, 1);
if (!$status) {
throw new Exception('Could not add cache.');
}
if ($auth !== '') {
$this->redis->auth($auth);
}
}
/**
* Returns the instance of the redis server connection.
*
* @return Redis instance
*/
public function getRedis()
{
return $this->redis;
}
/**
* Expire item from the cache.
*
* Example:
*
* # expires foo
* $cache->expire('foo');
*
* @param string $arg a single key.
*/
public function expire($arg)