diff --git a/src/pdel.lua b/src/pdel.lua index 210e36a..a159a14 100644 --- a/src/pdel.lua +++ b/src/pdel.lua @@ -1,25 +1,19 @@ --!/usr/bin/env lua -local function deleteKeys (keys) - for i, name in ipairs(keys) do - redis.call("DEL", name) - end -end - -if type(redis.replicate_commands) == 'function' and redis.replicate_commands() then -- Redis 3.2+ - local count = 0 - local cursor = "0" - local keys +if type(redis.replicate_commands) == "function" and redis.replicate_commands() then -- Redis 3.2+ + local count = 0 + local cursor = "0" + local keys - repeat - cursor, keys = unpack(redis.call("SCAN", cursor, "MATCH", KEYS[1])) - count = count + #keys - deleteKeys(keys) - until cursor == "0" + repeat + cursor, keys = unpack(redis.call("SCAN", cursor, "MATCH", KEYS[1])) + count = count + #keys + redis.call("DEL", unpack(keys)) + until cursor == "0" - return count + return count else - local keys = redis.call("KEYS", KEYS[1]) - deleteKeys(keys) - return #keys + local keys = redis.call("KEYS", KEYS[1]) + redis.call("DEL", unpack(keys)) + return #keys end