-
EVAL
richiede un minimo di due argomenti; lo script e il numero di chiavi che stai passando allo script. In questo caso, stai passando zero chiavi, il che significa che lo script può essere invocato come segue:redis-cli EVAL "$(cat sum.lua)" 0
oppure:
redis-cli --eval sum.lua
-
La struttura del tuo ciclo per l'iterazione sui valori restituiti da
KEYS
era errato; Te l'ho aggiustato. -
Devi convertire il valore restituito da
GET
da una stringa a un numero usandotonumber
di Lua funzione.
Con le modifiche precedenti apportate, il seguente script dovrebbe funzionare per te:
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