//redis脚本
private function _luaScript()
{
return <<<EOF
local getLen = function(key)
return redis.call('lLen',key)
end
local pushList = function(key,val)
return redis.call('lPush',key,val)
end
local getInterval = function(val)
if(val ~= false) then
if(type(val) == 'boolean') then
return 0
end
if(type(val) == 'number') then
return val
end
if(type(val) == 'string') then
return tonumber(val)
end
return 1
else
return 0
end
end
local listKey = KEYS[1]
local listVal = ARGV[1]
local maxLen = getInterval(ARGV[2])
local listLen = getInterval(getLen(listKey))
if(listLen >= maxLen) then
return 0
end
pushList(listKey,listVal)
return 1
EOF;
}
//方法调用
public function test(){
$codeRedis = new \Redis();
$codeRedis->connect('127.0.0.1',6379,2);
$key = "KEY"
$lPushCID = $order['id'];
//校验
$res = $codeRedis->eval($this->_luaScript(),[$key,$lPushCID,1],1);
//清除当前处理业务缓存
$codeRedis->del("CODE_".$updata['codeid']);
}
处理高并发 redis 脚本
最新推荐文章于 2024-07-11 00:09:47 发布