-
EVAL
krä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)" 0
eller:
redis-cli --eval sum.lua
-
Din loopstruktur för att iterera över värdena som returneras från
KEYS
var felaktig; Jag har fixat det åt dig. -
Du måste konvertera värdet som returneras från
GET
från en sträng till ett nummer med Luastonumber
funktion.
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