summaryrefslogtreecommitdiff
path: root/inc/cache.php
diff options
context:
space:
mode:
authorMacil Tech <maciltech@gmail.com>2012-12-02 19:00:58 -0700
committerMacil Tech <maciltech@gmail.com>2013-01-22 20:22:16 -0600
commit970b6e83764fd3fd8f16af80a643647602067d9a (patch)
tree1501cb58941732bf6ca4abe94830aee98196e830 /inc/cache.php
parent7a68fc952548d3f275518f675888143d93e9148a (diff)
Add Redis caching support.
Compatible with the phpredis extension: https://github.com/nicolasff/phpredis
Diffstat (limited to 'inc/cache.php')
-rw-r--r--inc/cache.php23
1 files changed, 23 insertions, 0 deletions
diff --git a/inc/cache.php b/inc/cache.php
index 89ca865c..849748d4 100644
--- a/inc/cache.php
+++ b/inc/cache.php
@@ -19,6 +19,14 @@ class Cache {
self::$cache = new Memcached();
self::$cache->addServers($config['cache']['memcached']);
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':
self::$cache = array();
break;
@@ -45,6 +53,11 @@ class Cache {
case 'php':
$data = isset(self::$cache[$key]) ? self::$cache[$key] : false;
break;
+ case 'redis':
+ if (!self::$cache)
+ self::init();
+ $data = json_decode(self::$cache->get($key), true);
+ break;
}
// debug
@@ -68,6 +81,11 @@ class Cache {
self::init();
self::$cache->set($key, $value, $expires);
break;
+ case 'redis':
+ if (!self::$cache)
+ self::init();
+ self::$cache->setex($key, $expires, json_encode($value));
+ break;
case 'apc':
apc_store($key, $value, $expires);
break;
@@ -86,6 +104,7 @@ class Cache {
switch ($config['cache']['enabled']) {
case 'memcached':
+ case 'redis':
if (!self::$cache)
self::init();
self::$cache->delete($key);
@@ -114,6 +133,10 @@ class Cache {
case 'php':
self::$cache[$key] = array();
break;
+ case 'redis':
+ if (!self::$cache)
+ self::init();
+ return self::$cache->flushDB();
}
return false;