-
EVALnécessite un minimum de deux arguments ; le script et le nombre de clés que vous transmettez au script. Dans ce cas, vous ne transmettez aucune clé, ce qui signifie que le script peut être invoqué comme suit :redis-cli EVAL "$(cat sum.lua)" 0ou :
redis-cli --eval sum.lua -
Votre structure de boucle pour itérer sur les valeurs renvoyées par
KEYSétait incorrect ; Je l'ai corrigé pour vous. -
Vous devez convertir la valeur renvoyée par
GETd'une chaîne à un nombre en utilisant letonumberde Lua fonction.
Une fois les modifications ci-dessus apportées, le script suivant devrait fonctionner pour vous :
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