You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.3 KiB

<?php
namespace p3k;
class Cache {
private static $redis;
public static function redis($config=false) {
if(empty(self::$redis)) {
if($config) {
self::$redis = new \Predis\Client($config);
} else {
self::$redis = new \Predis\Client('tcp://127.0.0.1:6379');
}
}
return self::$redis;
}
public static function reset() {
self::$redis = null;
}
public static function set($key, $value, $exp=600) {
self::redis();
if($exp) {
self::$redis->setex($key, $exp, json_encode($value));
} else {
self::$redis->set($key, json_encode($value));
}
}
public static function get($key, $default=null) {
self::redis();
$data = self::$redis->get($key);
if($data) {
return json_decode($data);
} else {
return $default;
}
}
public static function delete($key) {
self::redis();
return self::$redis->del($key);
}
public static function expire($key, $seconds=0) {
self::redis();
if($seconds)
return self::$redis->expire($key, $seconds);
else
return self::$redis->del($key);
}
public static function incr($key, $value=1) {
self::redis();
return self::$redis->incrby($key, $value);
}
public static function decr($key, $value=1) {
self::redis();
return self::$redis->decrby($key, $value);
}
}