Mehrere Werte aus der Redis-Datenstruktur atomar einfügen?

Gibt es ein Redis-Daten-Struktur, die es ermöglicht, Atomare operation des knallens (+entfernen) mehrere Elemente, die es enthält?

Gibt es bekannte SPOP oder RPOP, aber immer nur einen einzelnen Wert zurückgeben. Also, wenn ich den ersten N Werte aus der Menge/Liste, muss ich rufen Sie den Befehl N-mal, was teuer ist. Lassen Sie uns sagen, dass die Menge/Liste enthält Millionen von Artikeln. Gibt es etwas wie SPOPM "setName" 1000die zurückkehren würde, und entfernen Sie 1000 zufällige Elemente aus einer Menge oder RPOPM "listName" 1000was wieder die 1000 Recht-die meisten Artikel aus der Liste?

Ich weiß, gibt es Befehle wie SRANDMEMBER und LRANGE, aber das tun Sie nicht entfernen Sie die Elemente aus der Datenstruktur. Sie können einzeln gelöscht werden. Allerdings, wenn es mehr Kunden Lesen aus der gleichen Datenstruktur, einige Elemente können mehr als einmal Lesen und einige können gelöscht werden, ohne Sie zu Lesen! Daher Atomarität ist, was meine Frage ist.

Auch, ich bin in Ordnung, wenn die Zeit-Komplexität für eine solche operation ist teurer. Ich bezweifle, dass es teurer sein als die Erteilung N (sagen wir mal 1000, N aus dem vorigen Beispiel) gesonderte Anträge zu Redis server.

Weiß ich auch über separate Transaktion zu unterstützen. Aber dieser Satz von Redis docs schreckt mich von der Nutzung für parallele Prozesse ändern Sie die set (destruktives Lesen):
Bei der Verwendung von UHR, EXEC-ausführen-Befehle nur, wenn der überwachte Schlüssel nicht geändert wurden, so dass für einen check-and-set-Mechanismus.

InformationsquelleAutor der Frage Pavel S. | 2013-12-16

Schreibe einen Kommentar