sql >> Base de Datos >  >> NoSQL >> Redis

Script Lua para Redis que suma los valores de las claves

  1. EVAL requiere un mínimo de dos argumentos; la secuencia de comandos y el número de claves que está pasando a la secuencia de comandos. En este caso, está pasando cero claves, lo que significa que la secuencia de comandos se puede invocar de la siguiente manera:

    redis-cli EVAL "$(cat sum.lua)" 0
    

    o:

    redis-cli --eval sum.lua
    
  2. Su estructura de bucle para iterar sobre los valores devueltos por KEYS era incorrecto; Lo he arreglado para ti.

  3. Debe convertir el valor devuelto por GET de una cadena a un número usando tonumber de Lua función.

Con los cambios anteriores realizados, el siguiente script debería funcionar para usted:

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