Ich baue mein erstes Redis-Server-Side-Skript (zum Debuggen) und mein Mangel an Lua Erfahrung hat mich ziemlich fest.Lua-Skript für Redis, die die Werte der Schlüssel summiert
Im Wesentlichen haben Sie einen Datensatz von K/V-Paaren (enthält ~ 1000 Werte), von denen ich alle Schlüssel auflisten möchte, die einem Muster entsprechen. Zum Beispiel in redis-cli:
> KEYS "carlos:*"
1) "carlos:1"
2) "carlos:2"
3) "carlos:3"
4) "carlos:4"
Basierend auf der obigen Ausgabe ich die Summe dieser Schlüssel zurückgeben möchten, indem ein Lua-Script ausgeführt wird. Zur Zeit habe ich folgendes auf meinem sum.lua
local sum = 0
local matches = redis.call('KEYS', 'carlos:*')
for unpack(matches)
sum = sum + redis.call('GET', matches)
end
return sum
Während das obige Skript wahrscheinlich falsch ist, versuchen sogar redis.call('KEYS', 'carlos:*')
selbst erzeugt den folgenden Fehler
root @ carlos: ~ # redis-cli EVAL $“ (cat sum.lua)“
(Fehler) ERR falsche Anzahl von Argumenten für 'eval' Befehl
I h habe eine Reihe von Wiederholungen meiner Syntax vergeblich versucht. Irgendwelche Ideen?
Dank
Beachten Sie, dass das Skript für immer in Redis zwischengespeichert werden, so sollten Sie in der Regel ARGV verwenden Argumente zu übergeben und nicht hart codieren Parameter wie 'carlos: *'. – CherryDT