Lua 安全释放
Lua 安全释放
-- 只有 value 等于自己的 token 才删除
if redis.call('GET', KEYS[1]) == ARGV[1] then
return redis.call('DEL', KEYS[1])
else
return 0
end调用方式
调用方式
EVAL "if redis.call('GET', KEYS[1]) == ARGV[1] then return redis.call('DEL', KEYS[1]) else return 0 end" 1 lock:order:42 6f1d2c4e
# 返回 1=删除成功(自己的锁);0=已不是自己的锁,不动客户端库(Redisson 等)都用等价 Lua 实现解锁;自研锁照抄这段即可,KEYS/ARGV 不要拼进脚本文本。