Redis
 sql >> Base de données >  >> NoSQL >> Redis

Script Lua pour Redis qui additionne les valeurs des clés

  1. EVAL nécessite un minimum de deux arguments ; le script et le nombre de clés que vous transmettez au script. Dans ce cas, vous ne transmettez aucune clé, ce qui signifie que le script peut être invoqué comme suit :

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

    ou :

    redis-cli --eval sum.lua
    
  2. Votre structure de boucle pour itérer sur les valeurs renvoyées par KEYS était incorrect ; Je l'ai corrigé pour vous.

  3. Vous devez convertir la valeur renvoyée par GET d'une chaîne à un nombre en utilisant le tonumber de Lua fonction.

Une fois les modifications ci-dessus apportées, le script suivant devrait fonctionner pour vous :

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