最近在做spring cloud微服务架构,有些业务用到了分布式锁,于是了解到redis的setnx可以实现分布式锁,但是我考虑到死锁的问题,就考虑加上过期时间,但是setnx不支持同时设置过期时间,于是lua上场了。
local result = redis.call('setnx',KEYS[1],KEYS[2]);
if result == 1 then
redis.call('expire',KEYS[1],KEYS[3]);
end;
return result;
最近在做spring cloud微服务架构,有些业务用到了分布式锁,于是了解到redis的setnx可以实现分布式锁,但是我考虑到死锁的问题,就考虑加上过期时间,但是setnx不支持同时设置过期时间,于是lua上场了。
local result = redis.call('setnx',KEYS[1],KEYS[2]);
if result == 1 then
redis.call('expire',KEYS[1],KEYS[3]);
end;
return result;