master

laravel/framework

Last updated at: 29/12/2023 09:20

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;
    }
}