-
EVAL
vyžaduje minimálně dva argumenty; skript a počet klíčů, které skriptu předáváte. V tomto případě předáváte nulové klíče, což znamená, že skript lze vyvolat následovně:redis-cli EVAL "$(cat sum.lua)" 0
nebo:
redis-cli --eval sum.lua
-
Struktura smyčky pro iteraci hodnot vrácených z
KEYS
byl nesprávný; Opravil jsem to pro vás. -
Je třeba převést hodnotu vrácenou z
GET
z řetězce na číslo pomocí Luatonumber
funkce.
Po provedení výše uvedených změn by vám měl fungovat následující skript:
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