Redis
 sql >> Database >  >> NoSQL >> Redis

Script Lua per Redis che somma i valori delle chiavi

  1. 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
    
  2. La struttura del tuo ciclo per l'iterazione sui valori restituiti da KEYS era errato; Te l'ho aggiustato.

  3. Devi convertire il valore restituito da GET da una stringa a un numero usando tonumber 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