-
EVALrequer 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 deKEYSestava incorreto; Eu consertei para você.
-
Você precisa converter o valor retornado deGETde uma string para um número usando otonumberde 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