connect(C('REDIS_LOCAL'), C('REDIS_PORT')); // 连接Redis self::$redis->auth(C('REDIS_PASS')); // 密码验证 self::$redis->select(C('REDIS_NUMBER')); // 选择数据库 } /**------------------------------ list --------------------------------------*/ /** * [rPush 添加,从列表的尾部插入一条数据] * @param [string] $key [键] * @param [array] $value [值] * @param [int] $time [时间] * @return [bool|int] */ public function rPush($key, $value, $time = 0) { // 添加队列 $result = self::$redis->rpush($key, $value); // 判断是否需要设置周期 if ($time && intval($time) > 0){ // 更新周期 self::$redis->expire($key, $time); } // 更新周期 return $result; } /** * [lPop 获取,从列表的头部移除,获取一条数据] * @param [string] $key [键] * @return [bool|object] */ public function lPop($key) { $result = self::$redis->lpop($key); return $result; } /** * [total 获取列表数据] * @param [string] $key [键] * @param [string] $start_range [开始位置] * @param [string] $end_range [结束位置] * @return [bool|array] */ public function getData($key, $start_range = 0, $end_range = -1) { $result = self::$redis->lRange($key, $start_range, $end_range); return $result; } /** * [getLength 获取指定队列长度] * @param [string] $key [键] * @return [bool|int] */ public function getLength($key) { $result = self::$redis->lsize($key); return $result; } /** * [getStockNumber 下单未支付的订单 获取未支付的库存数量] * @param [string] $key [键] * @param [string] $str [元素] * @return [bool|int] */ public function getStockNumber($key, $str) { $keys = self::$redis->keys($key); $count = 0; foreach ($keys as &$val) { $data = self::$redis->lRange($val, 0, -1); $count += intval(json_decode($data[0], true)[$str]); unset($data); } return $count; } /** * [forRPush 循环添加,从列表的尾部插入一条数据] * @param [string] $key [键] * @param [array] $value [值] * @param [int] $time [时间] * @return [bool|int] */ public function forRPush($key, $value, $time = 0) { // 定义长度 for ($i = 0; $i < $value; $i++) { // 添加队列 $result = self::$redis->rpush($key, 1); if (!$result) { self::$redis->removeKey($key); return false; } } // 判断是否需要设置周期 if ($time && intval($time) > 0) { // 更新周期 self::$redis->expire($key, $time); } // 更新周期 return $result; } /** * [forLPop 循环移除,从列表的头部移除一条数据] * @param [string] $key [键] * @param [array] $value [值] * @return [bool|int] */ public function forLPop($key, $value) { // 定义长度 for ($i = 0; $i < $value; $i++) { // 添加队列 $result = self::$redis->lpop($key); if(!$result){ return false; } } return true; } /**------------------------------ 公共 --------------------------------------*/ /** * [existsKey 判断key是否存在] * @param [string] $key [键] * @return [bool|int] 存在返回1,不存在返回0 */ public function existsKey($key) { $result = self::$redis->exists($key); return $result; } /** * [removeKey 移除指定key] * @param [string] $key [键] * @return [bool] */ public function removeKey($key) { $result = self::$redis->delete($key); return $result; } }