LuaScripts.php
TLDR
This file defines a class called LuaScripts
in the Illuminate\Cache
namespace. It contains a single static method called releaseLock()
which returns a Lua script used to atomically release a lock.
Methods
releaseLock
This method returns the Lua script used to atomically release a lock. The Lua script checks if the value stored at the key specified in KEYS[1]
is equal to the value specified in ARGV[1]
. If they match, the script deletes the key and returns 1. Otherwise, it returns 0.
<?php
namespace Illuminate\Cache;
class LuaScripts
{
/**
* Get the Lua script to atomically release a lock.
*
* KEYS[1] - The name of the lock
* ARGV[1] - The owner key of the lock instance trying to release it
*
* @return string
*/
public static function releaseLock()
{
return <<<'LUA'
if redis.call("get",KEYS[1]) == ARGV[1] then
return redis.call("del",KEYS[1])
else
return 0
end
LUA;
}
}