RedisCache.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. namespace addons\shopro\library;
  3. use addons\shopro\facade\Redis as RedisFacade;
  4. class RedisCache
  5. {
  6. protected $redis = null;
  7. public function __construct()
  8. {
  9. }
  10. public function get($key, $default = null)
  11. {
  12. if (RedisFacade::exists($key)) {
  13. $value = RedisFacade::get($key);
  14. return !is_null($value) ? $this->unserialize($value) : null;
  15. }
  16. return $default;
  17. }
  18. public function set($key, $value, $ttl = null)
  19. {
  20. $value = $this->serialize($value);
  21. if ($ttl) {
  22. $result = RedisFacade::setex($key, $ttl, $value);
  23. } else {
  24. $result = RedisFacade::set($key, $value);
  25. }
  26. return $result;
  27. }
  28. /**
  29. * 判断一个项目在缓存中是否存在
  30. * @param string $key 缓存键值
  31. *
  32. * @return bool
  33. */
  34. public function has($key)
  35. {
  36. return RedisFacade::exists($key);
  37. }
  38. /**
  39. * 删除指定键值的缓存项
  40. *
  41. * @param string $key 指定的唯一缓存key对应的项目将会被删除
  42. *
  43. * @return bool 成功删除时返回ture,有其它错误时时返回false
  44. */
  45. public function delete($key)
  46. {
  47. return RedisFacade::del($key);
  48. }
  49. /**
  50. * 单次操作删除多个缓存项目.
  51. *
  52. * @param iterable $keys 一个基于字符串键列表会被删除
  53. *
  54. * @return bool True 所有项目都成功被删除时回true,有任何错误时返回false
  55. */
  56. public function deleteMultiple($keys) {}
  57. /**
  58. * 清除所有缓存中的key
  59. *
  60. * @return bool 成功返回True.失败返回False
  61. */
  62. public function clear() {}
  63. /**
  64. * 根据指定的缓存键值列表获取得多个缓存项目
  65. *
  66. * @param iterable $keys 在单次操作中可被获取的键值项
  67. * @param mixed $default 如果key不存在时,返回的默认值
  68. *
  69. * @return iterable 返回键值对(key=>value形式)列表。如果key不存在,或者已经过期时,返回默认值。
  70. */
  71. public function getMultiple($keys, $default = null) {}
  72. /**
  73. * 存储一个键值对形式的集合到缓存中。
  74. *
  75. * @param iterable $values 一系列操作的键值对列表
  76. * @param null|int|\DateInterval $ttl 可选项.项目的存在时间,如果该值没有设置,且驱动支持生存时间时,将设置一个默认值,或者驱自行处理。
  77. *
  78. * @return bool 成功返回True.失败返回False.
  79. */
  80. public function setMultiple($values, $ttl = null) {}
  81. /**
  82. * Serialize the value.
  83. *
  84. * @param mixed $value
  85. * @return mixed
  86. */
  87. protected function serialize($value)
  88. {
  89. return is_numeric($value) && !in_array($value, [INF, -INF]) && !is_nan($value) ? $value : serialize($value);
  90. }
  91. /**
  92. * Unserialize the value.
  93. *
  94. * @param mixed $value
  95. * @return mixed
  96. */
  97. protected function unserialize($value)
  98. {
  99. return is_numeric($value) ? $value : unserialize($value);
  100. }
  101. public function __call($funcname, $arguments)
  102. {
  103. return RedisFacade::instance()->{$funcname}(...$arguments);
  104. }
  105. }