要获取锁,要走的路如下:
SET resource_name my_random_value NX PX 30000
仅当密钥尚不存在时,该命令才会设置密钥(选项),过期时间为 30000 毫秒(选项)。该键设置为值“my_random_value”。此值在所有客户端和所有锁定请求中必须是唯一的。NXPX
基本上,使用随机值是为了以安全的方式释放锁,并使用一个脚本告诉Redis:仅当密钥存在并且存储在密钥处的值与我期望的值完全相同时,才将其删除。这是通过以下 Lua 脚本完成的:
if redis.call("get",KEYS[1]) == ARGV[1] then
return redis.call("del",KEYS[1])
else
return 0
end