REDIS / jedis aktualisiert Scores aller Mitglieder in einem sortierten Set

8

Was ist der beste Weg, um eine sortierte Menge mittlerer Größe in REDIS zu erhöhen? (Vorzugsweise mit Java-Treiber JEDIS) Set hat etwa 100-200K Datensätze in ihm. Ich möchte ihre Punktzahl um eine gegebene doppelte Zahl erhöhen.

vor

%Vor%

nach (inkrementieren um 1)

%Vor%

Die einzige mögliche Lösung, die ich gefunden habe, ist:

  1. Holen Sie alle sortierten Set (sagen A) Inhalte über das Netzwerk. (REDIS - & gt; -Anwendung).
  2. Erstellen Sie eine Pipeline, inkrementieren Sie sie in derselben Schleife mit ZADD oder ZINCRBY in einer Schleife
  3. Führen Sie dann die Pipeline aus.

Gibt es einen anderen / besseren Weg, es zu tun?

AKTUALISIEREN

Hier erfahren Sie, wie Sie mit einer for-Schleife alle sortierten Mengenmitglieder mithilfe von EVAL und Lua in REDIS inkrementieren.

%Vor%

Speichern Sie dies in einer Zeichenfolge und führen Sie eval mit Ihrem Treiber aus (in diesem Fall ja). Die Ausführung gibt nichts zurück.

mit Jedis

%Vor%     
Onur Gunduru 21.02.2013, 12:17
quelle

1 Antwort

2

Die Kommunikation zwischen dem Client und redis kann sehr lange dauern. Um dies zu vermeiden, können Sie eine "SET-Type" -Kopie des sortierten Sets erstellen. Angenommen, Sie haben eine sortierte Menge "Schlüssel1":

%Vor%

Und Sie haben eine Menge "key2":

%Vor%

Dann können Sie das Inkrement einfach implementieren:

%Vor%

Redis gibt jedem Mitglied des (nicht sortierten) Sets key2 einen Standard-Score von 1 .

Zum Beispiel:

%Vor%     
luin 21.02.2013, 13:17
quelle