lib/sidekiq_unique_jobs/lua/shared/_delete_from_sorted_set.lua
local function delete_from_sorted_set(name, digest)
local score = redis.call("ZSCORE", "uniquejobs:digests", digest)
local total = redis.call("ZCARD", name)
local per = 50
for offset = 0, total, per do
local items
if score then
items = redis.call("ZRANGE", name, score, "+inf", "BYSCORE", "LIMIT", offset, per)
else
items = redis.call("ZRANGE", name, offset, offset + per -1)
end
if #items == 0 then
break
end
for _, item in pairs(items) do
if string.find(item, digest) then
redis.call("ZREM", name, item)
return item
end
end
end
return nil
end