Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Lua-Skript für Redis, das die Werte von Schlüsseln summiert

  1. EVAL erfordert mindestens zwei Argumente; das Skript und die Anzahl der Schlüssel, die Sie an das Skript übergeben. In diesem Fall übergeben Sie Nullschlüssel, was bedeutet, dass das Skript wie folgt aufgerufen werden kann:

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

    oder:

    redis-cli --eval sum.lua
    
  2. Ihre Schleifenstruktur zum Iterieren über die von KEYS zurückgegebenen Werte war falsch; Ich habe es für Sie behoben.

  3. Sie müssen den von GET zurückgegebenen Wert konvertieren von einem String zu einer Zahl mit Luas tonumber Funktion.

Mit den oben vorgenommenen Änderungen sollte das folgende Skript für Sie funktionieren:

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