Redis Zrange

Redis Zrange

Redis-sortierte Sets enthalten eindeutige, nicht wiederholende String-Typ-Mitglieder auf geordnete Weise. Standardmäßig werden die sortierten festgelegten Mitglieder in aufsteigender Reihenfolge nach ihren Bewertungswerten bestellt. Darüber hinaus führen sortierte Sets einen nullbasierten Index bei, in dem die Mitglieder als 0, 1,… usw. eingestuft werden. Immer wenn die Punktzahlen unter zwei oder mehr Mitgliedern ähnlich sind, erfolgt die Bestellung durch lexikografische Ordnung. Da die sortierten Set -Elemente bereits bestellt wurden. Darüber hinaus werden die sortierten Redis-Sets auf einer doppelten Datenstruktur basieren, mit der Operationen in O (LOG (N)) ZEIT-Komplexität addieren, lesen, entfernen und aktualisieren können.

In diesem Leitfaden konzentrieren wir uns auf den Befehl Zrange, mit dem eine Reihe von Mitgliedern nach ihren Bewertungen, Indizes oder lexikografischem Abfragen abfragt werden kann.

Der Befehl Zrange

Mit dem Befehl ZRange wird ein Sortierer -Set abgerufen, der in einem bestimmten Schlüssel gespeichert ist. Mit diesem Befehl können Sie eine Reihe von Elementen abfragen, die auf verschiedenen Eigenschaften basieren, wie z. B. Rang, Punktzahl oder lexikografische Ordnung. Standardmäßig verwendet der Befehl ZRange einen indexbasierten Bereich. Die grundlegende Syntax des Befehls zRange lautet wie folgt.

Syntax:

Zrange Sorted_set_key Start End [ByScore | Vonx] [rev] [Offset Count] [With Scores]
  • sorted_set_key: Der Schlüssel des sortierten Satzes.
  • Start: Der Startwert der Bereichsabfrage. Dies kann ein Wert, ein Rang oder ein lexikografischer Wert sein.
  • Ende: Der Schließwert der Bereichsabfrage. Dies kann ein Wert, ein Rang oder ein lexikografischer Wert sein.

Die obigen Argumente sind für diesen Befehl obligatorisch, und einige optionale Argumente können wie folgt angegeben werden.

  • BYSCORE: Der Bereich (Start- und Endargumente) wird basierend auf den Punktzahlen angegeben.
  • Vonx: Der Bereich wird basierend auf den lexikografischen Werten spezifiziert.
  • Rev: Dieses Argument wird die Reihenfolge der zurückgegebenen Mitglieder umkehren, wobei der 0. Index das Mitglied mit der höchsten Punktzahl hält.
  • GRENZE: Dieses Argument beschränkt die Anzahl der zurückgegebenen Mitglieder von einem gegebenen Versatz.
  • Mit Erkenntnissen: Standardmäßig gibt der Befehl ZRange nur die Mitglieder in einem bestimmten Bereichsintervall zurück. Wenn dieses Argument angegeben ist.

Wie bereits erwähnt, gibt der Befehl zrange die Liste der Mitglieder in einem bestimmten Bereich eines sortierten Satzes zurück, das in einer bestimmten Schlüssel gespeichert ist. Wenn das Argument mit dem With -Scores angegeben ist, wird die zugehörige Punktzahl angezeigt. Beginnend mit Redis Version 6.2.0, The Zrevrange, Zrangebyscore, Zrevrangebyscore, Zrangebylex, Zrevrangebylex -Befehle können durch den Befehl Zrange ersetzt werden.

Anwendungsfall 01 - Abrufen der Top 3 Benutzer mit den niedrigsten Erfahrungspunkten in einer Spiele -Rangliste abrufen

Indexbasiertes Bereich

Nehmen wir ein Online -Spiel an, bei dem jeder Benutzer mit Erfahrungspunkten belohnt wird, die auf der Anzahl der abgeschlossenen Missionen basieren. Die Datenstruktur sortierte Datenstruktur ist ein idealer Kandidat für diese Informationen, wie im Folgenden gezeigt.

Zadd OnlineGameUsers 3000 "Jack"
Zadd OnlineGameUsers 100 "Rihana"
Zadd OnlineGameUsers 1250 "Niku"
Zadd OnlineGameUsers 800 "Abigirl"
Zadd OnlineGameUsers 4500 "Dickson"

Wie Sie sehen können, wurden die Spielerfahrungspunkte als Punktzahl jedes Mitglieds gespeichert.


Lassen Sie uns das neu erstellte sortierte Set untersuchen, das auf Key 'OnlineGameUsers' gespeichert ist. Da die Standardbereichsabfrage auf Indizes basiert, werden wir die minimalen und maximalen Grenzen als 0 und 5 angeben.

Zrange OnlineGameUsers 0 5 With Scores


Wie erwartet werden die Mitglieder nach Bewertungen in aufsteigender Reihenfolge sortiert. Fragen wir die drei besten Benutzer mit den niedrigsten Erfahrungspunkten an. Da das Set in aufsteigender Reihenfolge sortiert ist, ist es schnell und trivial, die drei besten Mitglieder mit den niedrigsten Punkten wie folgt zu erhalten.

Zrange OnlineGameUsers 0 2 With Scores

Wie bereits erwähnt, haben die sortierten Sets null basierte Indizes. Daher können die ersten drei Elemente als Indexbereich von 0 bis 2 angegeben werden. Die Ausgabe sollte die Top 3 Elemente mit den niedrigsten Punktzahlen wie folgt anzeigen.

Anwendungsfall 02 - Benutzer mit mehr als 3000 Erfahrungspunkten in einer Spiele -Rangliste abrufen

In diesem Szenario müssen wir alle Benutzer, die mehr als 1000 Erfahrungspunkte haben, abfragen. Da wir über einen Score-basierten Bereich sprechen, verwenden wir das optionale Argument von ByScore, um den Bereich in Bewertungswerten anzugeben.

Zrange OnlineGameUsers (3000 +Inf ByScore mit Erkenntnissen

Die Bereichsgrenzen wurden unter Verwendung der Bewertungen angegeben. Da wir Werte von mehr als 3000 benötigen, muss die Punktzahl von 3000 ausgeschlossen werden. Der Befehl zrange unterstützt ausschließend bewertet, indem er ihn mit dem '(' Charakter vorangestellt hat.


Wie erwartet haben wir nur ein Mitglied, dessen Erfahrungspunkt (Punktzahl) mehr als 3000 beträgt.

Anwendungsfall 03: Erhalten Sie die 3 Top -3 -Benutzer, deren höchste Erfahrung Punkte haben

Standardmäßig bestellt der sortierte fest. Daher befindet sich das Mitglied mit der niedrigsten Punktzahl im 0. Index. Um die Top 3 Benutzer mit den höchsten Punktzahlen zu erhalten, müssen wir das Rev. Argument wie folgt an den Befehl Zrange übergeben. Es wird den sortierten Sortierten in absteigender Reihenfolge bestellen und den Indexbereich ab 0 bis 2 abfragen.

Zrange OnlineGameUsers 0 2 With Scores Rev

Anwendungsfall 04 - Abrufen von Benutzern, deren Name mit „L“ oder dem folgenden Brief beginnt

Mit dem Befehl ZRange können Sie eine Reihe von Mitgliedern auf der Grundlage lexikografischer Werte abrufen, wenn die Bewertungen unter den Mitgliedern ähnlich sind. Setzen wir alle Punkte wie folgt auf 0 zurück.

Zadd OnlineGameUsers 0 "Jack"
Zadd OnlineGameUsers 0 "Rihana"
Zadd OnlineGameUsers 0 "Niku"
Zadd OnlineGameUsers 0 "Abigirl"
Zadd OnlineGameUsers 0 "Dickson"


Wie erwartet wurden die Erfahrungspunkte (Bewertungen) auf 0 zurückgesetzt, wie im Folgenden gezeigt.


Verwenden wir das ByLEX -Argument, um Mitglieder abzurufen, deren Namen mit dem Buchstaben 'L' oder dem folgenden Brief beginnen.

Zrange OnlineGameUsers [L + vonx

Die Bereichsgrenzen wurden unter Verwendung von Stringwerten (lexikografisch) angegeben. Die Ausgabe sollte alle Mitglieder sein, deren Namen mit dem Buchstaben 'l' oder dem folgenden Brief beginnen. Idealerweise sollten „Niku“, „Rihana“ und „Dickson“ die Ausgabe sein. Der Kleinbuchstabenbuch „D“ erfolgt nach dem Großbuchstaben „L“ nach ihren ASCII -Werten.

Abschluss

Zusammenfassend wird der Befehl ZRange verwendet, um eine Reihe von Mitgliedern zu holen, die in einem sortierten Set gespeichert sind, der in einem bestimmten Schlüssel gespeichert ist. Wie bereits erwähnt, können Sie mit diesem Befehl eine Reihe von festgelegten Elementen nach ihren Punktzahlen, Rängen oder lexikografischen Werten abfragen. Außerdem kann der Befehl ZRange mit dem Rev -Argument verwendet werden, um die Sortierreihenfolge umzukehren. Insgesamt werden mehrere Funktionen in diesen Befehl eingepackt und es ist zu einem Ersatz für mehrere Befehle wie ZrangeBylex, Zrangebyscore usw. geworden.