Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Script Lua para Redis que soma os valores das chaves


  1. EVAL requer um mínimo de dois argumentos; o script e o número de chaves que você está passando para o script. Nesse caso, você está passando zero keys, o que significa que o script pode ser invocado da seguinte forma:
    redis-cli EVAL "$(cat sum.lua)" 0
    

    ou:
    redis-cli --eval sum.lua
    

  2. Sua estrutura de loop para iterar sobre os valores retornados de KEYS estava incorreto; Eu consertei para você.

  3. Você precisa converter o valor retornado de GET de uma string para um número usando o tonumber de Lua função.

Com as alterações acima feitas, o script a seguir deve funcionar para você:
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