-
EVAL
requer um mínimo de dois argumentos; o script e o número de chaves que você está passando para o script. Nesse caso, você está passando zero keys, o que significa que o script pode ser invocado da seguinte forma:
redis-cli EVAL "$(cat sum.lua)" 0
ou:
redis-cli --eval sum.lua
-
Sua estrutura de loop para iterar sobre os valores retornados deKEYS
estava incorreto; Eu consertei para você.
-
Você precisa converter o valor retornado deGET
de uma string para um número usando otonumber
de Lua função.
Com as alterações acima feitas, o script a seguir deve funcionar para você:
local sum = 0
local matches = redis.call('KEYS', 'carlos:*')
for _,key in ipairs(matches) do
local val = redis.call('GET', key)
sum = sum + tonumber(val)
end
return sum