165 行
4.9 KiB
PHP
可执行文件
165 行
4.9 KiB
PHP
可执行文件
<?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;
|
|
}
|
|
} |