Redis sortierte Set -Score und Rang
Redis sortierte Sets sind die geordnete Variante der typischen Datenstruktur. Jedes sortierte Set -Element ist zwei spezielle Eigenschaften zugeordnet: Rang und Punktzahl. Der Bewertungswert wird verwendet, um die sortierten festgelegten Elemente in aufsteigender Reihenfolge zu bestellen. Darüber hinaus können die Bewertungen wiederholt werden, während die Mitglieder für einen bestimmten Satz einzigartig sein müssen. Da die sortierten festgelegten Elemente bestellt werden, sind die Vorgänge hinzufügen, aktualisieren und entfernen. Darüber hinaus ermöglicht diese Datenstruktur die Abfrage der Elemente in einem Bereich nach Punktzahl oder Rangwert mit großer Leistung.
Wie in der vorherigen Abbildung gezeigt, haben die meisten Hauptbefehle, die bei Redis -Sätzen arbeiten.
Der ZCount -Befehl
Der Befehl ZCount wird verwendet, um einen Bereich von festgelegten Elementen zwischen den angegebenen Bewertungen abzufragen. Die zurückgegebenen Elemente sind vom niedrigsten bis zur höchsten Punktzahl sortiert. Immer wenn die mehreren Elemente die gleichen Punktzahlen haben, werden diese nach lexikografischer Ordnung geordnet. Dieser Befehl hat auch die Zeitkomplexität von O (log (n)), da er die Rangeigenschaft verwendet, wenn eine Reihe von Elementen abfragt. Daher keine lineare Beziehung zur Anzahl der Elemente bei der Messung der Ausführungszeit.
Das Folgende ist die Syntax des ZCount -Befehls:
Syntax:
ZCount set_key minimum_score maximum_score
set_key: Der Schlüssel des Redis sortierten Satzes.
minimum_score: Der niedrigste Bewertungswert des angegebenen Bereichs.
höchste Punktzahl: Der höchste Bewertungswert des angegebenen Bereichs.
Die min- und maximalen Enden des Bereichs können auf unterschiedliche Weise angegeben werden. Immer wenn Sie keine Ahnung über die niedrigst und höchstmöglichen Punktzahlen im sortierten Satz haben, können die -Inf und +Inf verwendet werden. Es holt idealerweise alle Elemente im sortierten Set ab.
Darüber hinaus sind die angegebenen minimalen und maximalen Werte des Bereichs umfassen. Wenn Sie möchten, dass eine dieser Werte exklusiv ist, kann der „(“ (“(“ wie in der verwendet werden ZRANGEBYSCORE Befehl.
Dieser Befehl gibt einen Ganzzahlwert zurück, der die Anzahl der Elemente im angegebenen Bereich ist.
Anwendungsfall - Zählen Sie die Spieler mit einer Goldzahl zwischen einem bestimmten Bereich
Die sortierte Datenstruktur sortierte Datenstruktur ist ein idealer Kandidat für das Speichern der Ranglistendaten. Nehmen wir ein Szenario an, in dem ein Online -Spiel eine Menge Gold für seine Spieler anbietet, wenn die Missionen abgeschlossen sind. Basierend auf der Goldmenge jedes Spielers muss eine Rangliste implementiert werden. Wir können die Redis -sortierten Sets leicht verwenden, um eine solche Rangliste zu implementieren. Die Goldmenge kann als Punktzahl jedes Mitglieds abgebildet werden.
Lassen Sie uns ein sortiertes Set erstellen Gameleaderboard und fügen Sie einige Spieler mit goldenen Mengen hinzu, wie im Folgenden gezeigt. Der Befehl ZADD wird verwendet, um Spieler zum Sortierten zu erstellen und zu dem im Schlüssel gespeicherten Set -Set hinzuzufügen Gameleaderboard:
Zadd Gameleaderboard 1000 "Jack" 450 "Rexy" 3000 "John" 1600 "Mary" 450 "Rakesh"
Verwenden wir den Befehl Zrangebyscore, um zu überprüfen, ob die Mitglieder ordnungsgemäß hinzugefügt und sortiert werden.
Zrangebyscore Gameleaderboard -inf +Inf
Wie erwartet werden die Mitglieder nach Punktzahlen gespeichert und sortiert. Da „Rexy“ und „Rakesh“ die gleichen Punktzahlen erzielt haben, werden sie lexikografisch bestellt, wobei „Rakesh“ das oberste Mitglied der zurückgegebenen Liste ist.
Zählen wir die Anzahl der Elemente im sortierten Set mit dem Befehl ZCount:
zcount gameleaderboard -inf +inf
Da wir fünf festgelegte Mitglieder erhalten haben, beträgt der zurückgegebene Wert 5.
Lassen Sie uns einen Bereich angeben, der von 1000 bis 3000 beginnt.
ZCount Gameleaderboard 1000 3000
Lassen Sie uns zunächst unseren Set mit dem Befehl ZrangeByscore untersuchen, wie im Folgenden dargestellt:
Zrangebyscore Gameleaderboard -inf +Inf mit Erscheinen
Es gibt drei Mitglieder im Bereich von 1000 bis 3000. Da die 1000 und 3000 standardmäßig inklusive sind, sollte der vorherige ZCount -Befehl 3 zurückgeben 3.
Verwenden wir das „(“ -Scharakter, um die 1000 und 3000 Punkte mit demselben Beispiel auszuschließen, das im vorherigen Beispiel angezeigt wird:
ZCount Gameleaderboard (1000 (3000)
Da die 1000 und 3000 Punkte ausgeschlossen sind, ist das einzige linke Mitglied „Mary“ mit einem Punktzahl von 1600. Daher ist die zurückgegebene Zählung 1.
Wenn Sie die Mitglieder zwischen einer Reihe von Punktzahlen zählen müssen, wird empfohlen, den Befehl ZCount zu verwenden, der immens schneller ist.
Abschluss
Zusammenfassend wird der Befehl ZCount verwendet, um die Anzahl der Elemente in einem bestimmten Bereich von Bewertungswerten zu zählen. Es hat eine O (log (n)) Zeitkomplexität. Wie erläutert, kann es mit minimalen und maximalen Werten verwendet werden, um einen Bereich von Bewertungen wie im Befehl Zrangebyscore zu definieren. Die min und maximalen Werte sind standardmäßig inklusive. Wie zuvor gezeigt, kann das „(“ -Scharakter verwendet werden, um die Bewertungswerte auszuschließen. Insgesamt ist der ZCount -Befehl einfach zu bedienen und arbeitet mit großartiger Leistung.