1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
-- Lua script lock ANN for learning
-- Uses the following keys
-- key1 - prefix for keys
-- key2 - current time
-- key3 - key expire
-- key4 - hostname
local locked = redis.call('HGET', KEYS[1], 'lock')
local now = tonumber(KEYS[2])
if locked then
locked = tonumber(locked)
local expire = tonumber(KEYS[3])
if now > locked and (now - locked) < expire then
return { tostring(locked), redis.call('HGET', KEYS[1], 'hostname') or 'unknown' }
end
end
redis.call('HSET', KEYS[1], 'lock', tostring(now))
redis.call('HSET', KEYS[1], 'hostname', KEYS[4])
return 1
|