-
EVAL
vereist minimaal twee argumenten; het script en het aantal sleutels dat u aan het script doorgeeft. In dit geval geeft u nul-sleutels door, wat betekent dat het script als volgt kan worden aangeroepen:redis-cli EVAL "$(cat sum.lua)" 0
of:
redis-cli --eval sum.lua
-
Uw lusstructuur voor het herhalen van de waarden die worden geretourneerd door
KEYS
was onjuist; Ik heb het voor je opgelost. -
U moet de waarde die wordt geretourneerd door
GET
. omrekenen van een string naar een getal met Lua'stonumber
functie.
Met de bovenstaande wijzigingen zou het volgende script voor u moeten werken:
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