Script Lua para deletar as chaves com prefixo:

local cursor = "0"
repeat
    local result = redis.call("SCAN", cursor, "MATCH", ARGV[1], "COUNT", 1000)
    cursor = result[1]
    local keys = result[2]
    if #keys > 0 then
        redis.call("DEL", unpack(keys))
    end
until cursor == "0"
return true

E aqui está como você chamaria este script a partir do seu cliente Redis:

EVAL "local cursor = '0' repeat local result = redis.call('SCAN', cursor, 'MATCH', ARGV[1], 'COUNT', 1000) cursor = result[1] local keys = result[2] if #keys > 0 then redis.call('DEL', unpack(keys)) end until cursor == '0' return true" 0 "my-prefix:*"

Este script usa o comando SCAN para iterar sobre as chaves em lotes de 1000, correspondendo ao padrão dado (my-prefix:*). Ele deleta cada lote de chaves antes de passar para o próximo lote.

Essa abordagem evita o problema de tentar unpack muitas chaves de uma vez. Se você precisar ajustar o tamanho do lote, pode alterar o 1000 para outro número.