--[[ Get counts per child states Input: KEYS[1] processed key KEYS[2] unprocessed key KEYS[3] ignored key KEYS[4] failed key ARGV[1...] types ]] local rcall = redis.call; local processedKey = KEYS[1] local unprocessedKey = KEYS[2] local ignoredKey = KEYS[3] local failedKey = KEYS[4] local results = {} for i = 1, #ARGV do if ARGV[i] == "processed" then results[#results+1] = rcall("HLEN", processedKey) elseif ARGV[i] == "unprocessed" then results[#results+1] = rcall("SCARD", unprocessedKey) elseif ARGV[i] == "ignored" then results[#results+1] = rcall("HLEN", ignoredKey) else results[#results+1] = rcall("ZCARD", failedKey) end end return results