-
EVAL
erfordert 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)" 0
oder:
redis-cli --eval sum.lua
-
Ihre Schleifenstruktur zum Iterieren über die von
KEYS
zurückgegebenen Werte war falsch; Ich habe es für Sie behoben. -
Sie müssen den von
GET
zurückgegebenen Wert konvertieren von einem String zu einer Zahl mit Luastonumber
Funktion.
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