Redis Zrangebyscore

Redis Zrangebyscore

Abfragen von Redis sortierten Set -Elemente

Die Redis -sortierten Sets unterscheiden sich stark von den normalen Sätzen. Obwohl beide Set -Typen die einzigartigen Mitglieder im Inneren speichern, setzen die sortierten Sets die Elemente auf geordnete Weise. Die Haupteigenschaften des Redis -sortierten Satzes sind:

  • Jedes Element, das einem eindeutigen Index (Rand) zugewiesen ist, ab 0
  • Bewertungsbezogener Index pro Element
  • Lexikografischer Ordnung basierender Index pro Element

Daher können die sortierten Sort -Mitglieder von Redis basierend auf mehreren Maßnahmen wie Score, Rank (Index) und lexikografischer Messungen abgerufen werden. Zrangebyscore und ZRange sind die beiden Hauptbefehle mit Redis -Sortierten, mit denen die Mitglieder auf der Grundlage der zuvor angegebenen Maßnahmen iteriert werden können. In diesem Leitfaden konzentrieren wir uns auf den Befehl Zrangebyscore, mit dem die Mitglieder nach einer Reihe von Score -Werten abfragen werden.

Der Befehl zrangebyscore

Da der Befehl zrangebyscore eine logarithmische Zeitkomplexität hat, ist es sehr schnell, die sortierten Set -Elemente abzurufen. Darüber hinaus verkürzen die Befehlsoptionen wie Limit die Abrufzeit um einen beträchtlichen Betrag. Daher kann der Befehl zrangebyscore in Echtzeitanwendungen mit niedriger Latenz wie Online-Bestenlisten, vorrangigen Warteschlangen und sekundärer Indexierung im Allgemeinen sicher verwendet werden.

Syntax:

ZRANGEBYSCORE Sorted_set_key minimum_score maximum_score [withCores] [Limit Offset Count]

sorted_set_key: Dies ist die eindeutige Kennung, bei der das sortierte Set gespeichert ist.

minimum_score: Der Wert der unteren Grenzbewertung des angegebenen Bereichs.

maximum_score: Der höhere Grenzwertwert des angegebenen Bereichs.

Mit Erkenntnissen: Dieses optionale Argument gibt die Punktzahl jedes Elements zurück.

GRENZE: Dieses optionale Argument kann verwendet werden.

Der Befehl zrangebyscore gibt die sortierten festgelegten Mitglieder zwischen den angegebenen zurück minimum_score Und höchste Punktzahl Punktzahlen. Diese Mitglieder werden basierend auf den Bewertungswerten in aufsteigender Reihenfolge zurückgegeben. Wenn die mehreren Mitglieder die gleichen Bewertungen haben, folgt der Befehl der lexikografischen Ordnung.

Beispiel: Online -Spiele -Rangliste basiert auf Spielererfahrung

Nehmen wir an, es ist ein Online -Spiel, bei dem jeder Spieler Erfahrungspunkte sammeln kann, wenn er die Missionen abschließt, Quests entdeckt und die Feinde besiegt. Da Redis sortierte Sets reagiert und die In-Memory-Datenstrukturen, in denen Mitglieder basierend auf einer Punktzahl bestellt werden, können sie verwendet werden, um die Spielerdetails zu speichern. Die Informationen können wiederum mit geringer Latenz zurückgegeben werden.

Wie in der vorherigen Abbildung gezeigt, können die Player -Informationen zu einem Redis -sortierten Satz hinzugefügt und später bei Bedarf manipuliert werden.

Fügen wir die vier in der vorherigen Abbildung gezeigten Spieler hinzu. Wir werden den Befehl zadd verwenden, um die Player -Details dem sortierten Satz zu erstellen und hinzuzufügenRangliste: XP”.

Zadd Rangliste: XP 1500 Spieler: 01
Zadd Rangliste: XP 2500 Spieler: 02
Zadd Rangliste: XP 1000 Spieler: 03
Zadd Rangliste: XP 3500 Spieler: 04

Fragen Sie alle Spieler in der Spiele -Rangliste an

Wir können den Befehl zrangebyscore verwenden, um alle Spieler im Spiele -Rangliste zu holen, wie im Folgenden gezeigt. Die minimalen und maximalen Bewertungswerte werden als 1000 und 3500 angegeben. Wir können die verwenden -Inf Und +Inf Werte, wenn wir uns über die niedrigsten und höchsten Bewertungswerte nicht sicher sind:

ZRANGEBYSCORE RANGEBOARD: XP 1000 3500
ODER
Zrangebyscore Rangliste: XP -inf +Inf

Alle Mitglieder werden wie in der folgenden Ausgabe zurückgegeben:

Die Ausgabe wird in der aufsteigenden Reihenfolge nach Bewertungswerten sortiert.

Schließen Sie die Werte minimum_score oder maximum_score aus

Im vorherigen Beispiel sind die MIN- und Max -Score -Werte umfasst den Bereich umfassen. Wir können die MIN- und MAX -Score -Werte aus dem Bereich ausschließen, indem wir die Punktzahl mit dem „(“ (“(“ Charakter wie im Folgenden dargestellt:

ZRANGEBYSCORE RANGEBOARD: XP (1000 (3500)

Wie in der folgenden Ausgabe gezeigt, schließt die Ausgabe die Mitglieder aus, deren Punktzahlen 1000 und 3500 betragen.

Zeigen Sie sowohl die Mitgliedswerte als auch die Bewertungswerte gemeinsam an

Wir können das optionale Argument mit dem With -Scores mit dem Befehl zrangebyscore verwenden, um die Bewertungswerte pro Mitglied anzuzeigen.

ZRANGEBYSCORE RAUPAGE: XP -INF +INF With Scores

Ausgang:

Begrenzen Sie die Anzahl der zurückgegebenen Mitglieder

In einigen Szenarien müssen wir die Anzahl der zurückgegebenen Mitglieder pro Anruf einschränken. Angenommen, wir müssen die Top 2 Mitglieder bekommen, deren Erfahrungswerte (Punktzahl) am niedrigsten sind. Wir können das Grenzargument mit der Anzahl von 2 und dem Versatz von 0 verwenden. Der Offset ist der Rang pro Mitglied.

ZRANGEBYSCORE RANGEBOARD: XP -INF +Inf Limit 0 2

Dies gibt die Top 2 Mitglieder zurück, deren Punkte am niedrigsten sind.

Sie können das Grenzargument auch mit dem Argument mit dem With -Scores verwenden.

Zrange -Befehl anstelle von Zrangbyscore

Mit dem Redis 6.2.0 Version, der Befehl zrangebyscore ist veraltet. Daher können wir den Befehl ZRange verwenden, der den Befehl zragnebyscore genauso verhält, wenn er mit dem optionalen Argument von ByScore verwendet wird.

Abschluss

Zusammenfassend wird der Befehl zrangebyscore verwendet, um die Mitglieder zwischen den angegebenen minimalen und maximalen Bewertungswerten eines Redis -Sortierten -Satzes abzufragen, der in einem bestimmten Schlüssel gespeichert ist. Wie bereits erwähnt, hat dieser Befehl eine logarithmische Zeitkomplexität, die verwendet werden kann, um über eine Reihe von Mitgliedern mit geringer Latenz zu iterieren. Außerdem unterstützt es einige optionale Argumente, Grenzen und Erkenntnisse, die die zurückgegebene Mitgliederzahl einschränken und beide Wertepaare der Mitgliedscore anzeigen.