Add Redis caching support.

Compatible with the phpredis extension:
https://github.com/nicolasff/phpredis
This commit is contained in:
Macil Tech 2012-12-02 19:00:58 -07:00
parent 7a68fc9525
commit 970b6e8376
2 changed files with 29 additions and 0 deletions

View File

@ -19,6 +19,14 @@ class Cache {
self::$cache = new Memcached(); self::$cache = new Memcached();
self::$cache->addServers($config['cache']['memcached']); self::$cache->addServers($config['cache']['memcached']);
break; break;
case 'redis':
self::$cache = new Redis();
self::$cache->connect($config['cache']['redis'][0], $config['cache']['redis'][1]);
if ($config['cache']['redis'][2]) {
self::$cache->auth($config['cache']['redis'][2]);
}
self::$cache->select($config['cache']['redis'][3]) or die('cache select failure');
break;
case 'php': case 'php':
self::$cache = array(); self::$cache = array();
break; break;
@ -45,6 +53,11 @@ class Cache {
case 'php': case 'php':
$data = isset(self::$cache[$key]) ? self::$cache[$key] : false; $data = isset(self::$cache[$key]) ? self::$cache[$key] : false;
break; break;
case 'redis':
if (!self::$cache)
self::init();
$data = json_decode(self::$cache->get($key), true);
break;
} }
// debug // debug
@ -68,6 +81,11 @@ class Cache {
self::init(); self::init();
self::$cache->set($key, $value, $expires); self::$cache->set($key, $value, $expires);
break; break;
case 'redis':
if (!self::$cache)
self::init();
self::$cache->setex($key, $expires, json_encode($value));
break;
case 'apc': case 'apc':
apc_store($key, $value, $expires); apc_store($key, $value, $expires);
break; break;
@ -86,6 +104,7 @@ class Cache {
switch ($config['cache']['enabled']) { switch ($config['cache']['enabled']) {
case 'memcached': case 'memcached':
case 'redis':
if (!self::$cache) if (!self::$cache)
self::init(); self::init();
self::$cache->delete($key); self::$cache->delete($key);
@ -114,6 +133,10 @@ class Cache {
case 'php': case 'php':
self::$cache[$key] = array(); self::$cache[$key] = array();
break; break;
case 'redis':
if (!self::$cache)
self::init();
return self::$cache->flushDB();
} }
return false; return false;

View File

@ -91,6 +91,7 @@
$config['cache']['enabled'] = false; $config['cache']['enabled'] = false;
// $config['cache']['enabled'] = 'memcached'; // $config['cache']['enabled'] = 'memcached';
// $config['cache']['enabled'] = 'redis';
// $config['cache']['enabled'] = 'apc'; // $config['cache']['enabled'] = 'apc';
// $config['cache']['enabled'] = 'xcache'; // $config['cache']['enabled'] = 'xcache';
@ -104,6 +105,11 @@
$config['cache']['memcached'] = array( $config['cache']['memcached'] = array(
array('localhost', 11211) array('localhost', 11211)
); );
// Redis server to use. Location, port, password, database id.
// Note that Tinyboard may clear the database at times, so you may want to pick a
// database id just for Tinyboard to use.
$config['cache']['redis'] = array('localhost', 6379, '', 1);
/* /*
* ==================== * ====================