-
EVAL
kræver mindst to argumenter; scriptet og antallet af nøgler, du sender til scriptet. I dette tilfælde sender du nul nøgler, hvilket betyder, at scriptet kan aktiveres som følger:redis-cli EVAL "$(cat sum.lua)" 0
eller:
redis-cli --eval sum.lua
-
Din sløjfestruktur til iteration over værdierne returneret fra
KEYS
var forkert; Jeg har rettet det for dig. -
Du skal konvertere den returnerede værdi fra
GET
fra en streng til et tal ved hjælp af Luastonumber
funktion.
Med ovenstående ændringer, bør følgende script fungere for 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