RedisClass

RedisClass

<?php
namespace Addons\Api;
//[1.3.11]
class RedisController
{
    static $redis;

    /**
     * [__construct]
     * @param [string]    $local        [地址]
     * @param [int]    $port        [端口]
     * @param [string]    $pass        [密码]
     * @param [int]    $number    [选择的数据库]
     */
    public function __construct()
    {
        self::$redis = new \Redis();
        self::$redis->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;
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值