-
EVAL
né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)" 0
ou :
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
GET
d'une chaîne à un nombre en utilisant letonumber
de 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