summaryrefslogtreecommitdiffstats
path: root/lualib/redis_scripts/neural_maybe_lock.lua
blob: f705115b0ccc6e13d1ca5caf10ea510887e2489f (plain)
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