public static function unlock($name = '', $token = '')
{
$args = ['redis-lock' . $name, $token];
return Redis::eval(self::getReleaseLuaScript(), $args, 1);
}
public static function getReleaseLuaScript(): string
{
return <<<LUA
if redis.call("get",KEYS[1]) == ARGV[1]
then
return redis.call("del",KEYS[1])
else
return 0
end
LUA;
}
咨詢一下大佬,我想在webman中使用redis鎖,但是使用lua的原子性直接報(bào)錯(cuò)
ErrorException: Redis::eval() expects parameter 3 to be int, array given in /Users/xxx/php/webman_jinrong/vendor/illuminate/redis/Connections/Connection.php:116
我到底層去打印最終的eval的數(shù)據(jù)的時(shí)候發(fā)現(xiàn) args 和 key 是反過來了是為什么
如果使用Redis做延遲任務(wù)隊(duì)列,原生的是可以支持的,但是使用evalSha
依然不會(huì)觸發(fā)任務(wù)。寫了一個(gè)完整的項(xiàng)目,感覺這個(gè)Redis不是太友好,自己重新封裝了一個(gè)