handler(); $data = $redis->get($key); $jsonData = $data? json_decode($data, true) : []; return $jsonData? $jsonData : $data; } /** * 设置缓存 * @param $key 键名 * @param $data 数据:数组和字符串,数组自动转化JSON * @param int $expire 有效期:0为永久 * @return mixed */ public static function set($key, $data, $expire =null) { $expire = $expire !=null ? $expire : config('cache.stores.redis.expire', 24 * 3600); $data = is_array($data) && !empty($data)? json_encode($data, 256) : $data; $data = !empty($data)? $data : null; $redis = Cache::store('redis')->handler(); if ($expire > 0) { return $redis->setex($key, $expire, $data); } else { return $redis->set($key, $data); } } /** * 键名是否存在 * @param $key * @param $expire * @return mixed */ public static function exists($key){ $redis = Cache::store('redis')->handler(); return $redis->exists($key); } /** * 递增 * @param $key * @return bool */ public static function incr($key, $step=1){ $redis = Cache::store('redis')->handler(); return $redis->incrby($key, $step); } /** * 递减 * @param $key * @return bool */ public static function decr($key, $step=1){ $redis = Cache::store('redis')->handler(); return $redis->decrby($key, $step); } /** * 进队列缓存 * @param $key 键名 * @param $data 队列数据 * @param bool $clear 是否清除之前数据 * @return mixed */ public static function rPush($key, $data, $clear = false) { $redis = Cache::store('redis')->handler(); if ($clear) { $redis->del($key); } $data = is_array($data) ? json_encode($data, 256) : $data; return $redis->rpush($key, $data); } /** * 出队列 * @param $key 键名 * @return array|mixed */ public static function lPop($key) { $redis = Cache::store('redis')->handler(); $data = $redis->lpop($key); $jsonData = $data ? json_decode($data, true) : []; return $jsonData ? $jsonData : $data; } /** * 清除缓存 * @param $key 键名 * @return mixed */ public static function clear($key) { $redis = Cache::store('redis')->handler(); return $redis->del($key); } /** * 按键名匹配删除 * @param $key * @return bool */ public static function keyDel($key){ $redis = Cache::store('redis')->handler(); $keys = $redis->keys($key); foreach($keys as $key){ $redis->del($key); } return true; } /** * 有效期设置 * @param $key * @param $expire * @return mixed */ public static function expire($key, $expire){ $redis = Cache::store('redis')->handler(); return $redis->expire($key, $expire); } /** * 原子锁 * @param $key * @param $value * @param int $expire * @return mixed */ public static function setnx($key, $value, $expire=0){ $redis = Cache::store('redis')->handler(); $res = $redis->setnx($key, $value); if($expire){ $redis->expire($key, $expire); } return $res; } }