eval " redis.replicate_commands(); local key = KEYS[1] local client_name = ARGV[1] local expire = tonumber( ARGV[2] ) local result= redis.call('set',key, client_name, 'PX',expire,'NX') if result == false then return 0 end return 1" 1 key 客户端id 过期时间毫秒
如果加锁成功会返回1,失败则返回0
二、解锁脚本
redis.replicate_commands();local key = KEYS[1]local result = redis.call('get',key)local client_name = ARGV[1]if result ==nilthenreturn0endif client_name == result and redis.call('DEL',key)thenreturn1endreturn0
eval " redis.replicate_commands(); local key = KEYS[1] local result = redis.call('get',key) local client_name = ARGV[1] if result == nil then return 0 end if client_name == result and redis.call('DEL',key) then return 1 end return 0" 1 key 客户端id