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

7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
  1. <?php
  2. namespace p3k;
  3. class Cache {
  4. private static $redis;
  5. public static function redis($config=false) {
  6. if(empty(self::$redis)) {
  7. if($config) {
  8. self::$redis = new \Predis\Client($config);
  9. } else {
  10. self::$redis = new \Predis\Client('tcp://127.0.0.1:6379');
  11. }
  12. }
  13. return self::$redis;
  14. }
  15. public static function reset() {
  16. self::$redis = null;
  17. }
  18. public static function set($key, $value, $exp=600) {
  19. self::redis();
  20. if($exp) {
  21. self::$redis->setex($key, $exp, json_encode($value));
  22. } else {
  23. self::$redis->set($key, json_encode($value));
  24. }
  25. }
  26. public static function get($key, $default=null) {
  27. self::redis();
  28. $data = self::$redis->get($key);
  29. if($data) {
  30. return json_decode($data);
  31. } else {
  32. return $default;
  33. }
  34. }
  35. public static function delete($key) {
  36. self::redis();
  37. return self::$redis->del($key);
  38. }
  39. public static function expire($key, $seconds=0) {
  40. self::redis();
  41. if($seconds)
  42. return self::$redis->expire($key, $seconds);
  43. else
  44. return self::$redis->del($key);
  45. }
  46. public static function incr($key, $value=1) {
  47. self::redis();
  48. return self::$redis->incrby($key, $value);
  49. }
  50. public static function decr($key, $value=1) {
  51. self::redis();
  52. return self::$redis->decrby($key, $value);
  53. }
  54. }