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.

60 lines
1.2 KiB

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