Use named variables instead of referring to KEYS/ARGV array indices in message cache scripts.

This commit is contained in:
Jon Chambers
2020-10-01 16:09:03 -04:00
committed by Jon Chambers
parent f3f4bd33e5
commit 551a85c1e6
7 changed files with 75 additions and 64 deletions

View File

@@ -1,26 +1,27 @@
-- keys: queue_key, queue_metadata_key, queue_index
-- argv: guid_to_remove
local queueKey = KEYS[1]
local queueMetadataKey = KEYS[2]
local queueTotalIndexKey = KEYS[3]
local removedMessages = {}
for _, guid in ipairs(ARGV) do
local messageId = redis.call("HGET", KEYS[2], guid)
local messageId = redis.call("HGET", queueMetadataKey, guid)
if messageId then
local envelope = redis.call("ZRANGEBYSCORE", KEYS[1], messageId, messageId, "LIMIT", 0, 1)
local sender = redis.call("HGET", KEYS[2], messageId)
local envelope = redis.call("ZRANGEBYSCORE", queueKey, messageId, messageId, "LIMIT", 0, 1)
local sender = redis.call("HGET", queueMetadataKey, messageId)
redis.call("ZREMRANGEBYSCORE", KEYS[1], messageId, messageId)
redis.call("HDEL", KEYS[2], guid)
redis.call("HDEL", KEYS[2], messageId .. "guid")
redis.call("ZREMRANGEBYSCORE", queueKey, messageId, messageId)
redis.call("HDEL", queueMetadataKey, guid)
redis.call("HDEL", queueMetadataKey, messageId .. "guid")
if sender then
redis.call("HDEL", KEYS[2], sender)
redis.call("HDEL", KEYS[2], messageId)
redis.call("HDEL", queueMetadataKey, sender)
redis.call("HDEL", queueMetadataKey, messageId)
end
if (redis.call("ZCARD", KEYS[1]) == 0) then
redis.call("ZREM", KEYS[3], KEYS[1])
if (redis.call("ZCARD", queueKey) == 0) then
redis.call("ZREM", queueTotalIndexKey, queueKey)
end
if envelope and next(envelope) then