共计 413 个字符,预计需要花费 2 分钟才能阅读完成。
因为 setnx 这个指令自身无奈设置超时工夫,所以个别会采纳两种方法来做这件事:
1、采纳 lua 脚本,在应用 setnx 指令之后,再应用 expire 命令去给 key 设置过期工夫。
if redis.call("SETNX", "lock", "true") == 1 then
local expireResult = redis.call("expire", "lock", "10")
if expireResult == 1 then
return "success"
else
return "expire failed"
end
else
return "setnx not null"
end
2、间接应用 set(key,value,NX,PX,timeout) 指令,同时设置锁和超时工夫。
redis.call("SET", "lock", "true", "NX", "PX", "10000")
以上两种办法,应用哪种形式都能够。
开释锁的脚本两种形式都一样,间接调用 Redis 的 del 指令即可。
正文完