-
EVALerfordert mindestens zwei Argumente; das Skript und die Anzahl der Schlüssel, die Sie an das Skript übergeben. In diesem Fall übergeben Sie Nullschlüssel, was bedeutet, dass das Skript wie folgt aufgerufen werden kann:redis-cli EVAL "$(cat sum.lua)" 0oder:
redis-cli --eval sum.lua -
Ihre Schleifenstruktur zum Iterieren über die von
KEYSzurückgegebenen Werte war falsch; Ich habe es für Sie behoben. -
Sie müssen den von
GETzurückgegebenen Wert konvertieren von einem String zu einer Zahl mit LuastonumberFunktion.
Mit den oben vorgenommenen Änderungen sollte das folgende Skript für Sie funktionieren:
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