-
EVALkräver minst två argument; skriptet och antalet nycklar du skickar till skriptet. I det här fallet skickar du noll nycklar, vilket innebär att skriptet kan anropas enligt följande:redis-cli EVAL "$(cat sum.lua)" 0eller:
redis-cli --eval sum.lua -
Din loopstruktur för att iterera över värdena som returneras från
KEYSvar felaktig; Jag har fixat det åt dig. -
Du måste konvertera värdet som returneras från
GETfrån en sträng till ett nummer med Luastonumberfunktion.
Med ändringarna ovan bör följande skript fungera för dig:
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