In Redis haben wir Strings, die Eingabewerte darstellen. Wir haben (möchten) ein Lua-Skript, das dynamisch generiert wird (nachdem es von einem Benutzer über eine GUI definiert wurde), der eine Ergebniszeichenfolge basierend auf der Eingabezeichenfolge berechnet. Jeder Satz von Eingabewerten ist unabhängig voneinander. Also sollte dies trivial parallelisierbar sein, jedoch scheint EVAL
bis zur Fertigstellung zu blockieren.Wie führe ich ein einzelnes Lua-Skript gegen mehrere Redis-Werte parallel?
Gibt es einen Weg in Redis, ein einzelnes Lua-Skript über eine Reihe von Werten hinweg auszuführen, ohne das Skript selbst neu schreiben zu müssen?
Hmm, das klingt, als müsste ich meine Reihen künstlich zerbrechen. Etwas wie berechnet die sha1 jeder Zeile, dann Modulo n, wobei n ist meine Anzahl von Shards und dann bekomme ich zumindest einige Last teilen auf diese Weise ... – ArtB
Genau - noch genauer zu sein - einige Hash-Funktion auf dem _key_ von der Eintrag (berücksichtigen Sie nicht den Wert des Eintrags als Eingabe für den Hash), andernfalls muss das Paar (Schlüssel, Wert) möglicherweise migriert werden, wenn Sie den Wert aktualisieren. –
Darüber hinaus gibt es einige Open-Source-Proxies, die dies für Sie out-of-the-Box, als auch eine kommerzielle tun. –