Redis Zset

Redis Zset

„Möchten Sie eine Echtzeit-Rangliste für Ihr nächstes Online-Spiel mit Redis implementieren?? Redis liefert eine außergewöhnliche Lösung dafür mit Zsets, Dies ist ein kurzer Name für Redis -sortierte Sets und ein Tool, mit dem jeder Redis -Benutzer vertraut sein muss.

Redis Zset ist eine geordnete Sammlung von einzigartigen Mitgliedern, bei denen jedes Mitglied mit einem Bewertungswert verbunden ist. Zum Hervorheben werden die Zsets standardmäßig nach ihrem Punktzahl bestellt, was sie vom regulären Set -Typ ganz anders unterscheidet. Darüber hinaus kann mehr als ein Mitglied den gleichen Wertwert halten, und die Mitglieder werden in diesem Fall lexikografisch bestellt. Die Redis-Zsets sind eine bessere Wahl für vorrangige Warteschlangen, Sekundärindexierung, Ranglatenzahlen und Ratenbegrenzter. Weil Zsets Echtzeitanforderungen wie Reaktionsfähigkeit und memory Zugang mit geringer Latenz bieten.

Darüber hinaus wird jedem Mitglied ein Rangwert zugewiesen, der auf seiner Position in der ZSET basiert, die eher einem 0-basierten Index in einem Java-Array ähnelt.”

Ein kurzer Blick auf grundlegende ZSet -Befehle

Es stehen mehrere grundlegende Befehle zur Verfügung, um die Mitglieder von einem Zset (sortierten Set) hinzuzufügen, abzurufen und zu entfernen, der in einem bestimmten Zset -Schlüssel gespeichert ist. Schauen wir uns einen kurzen Blick auf drei Hauptbefehle an: Zadd, Zrange, Zrank und Zrem.

Eine Echtzeit Pokémon Das Beispiel für Spiele -Ranglisten wird hier demonstriert.

ZADD -Befehl

Nach der Registrierung der Benutzer müssen wir jeden Benutzer zu unserem ZSET -Namen hinzufügen Pokemon: Rangliste. Der Befehl ZADD ist also der ideale Kandidat für die Verwendung wie folgt. Angenommen, wir haben anfangs fünf Spieler registriert. Die Punktzahlen werden also 0 zugeordnet.

Zadd Pokemon: Rangliste 0 John

Der Rückgabewert ist 1, was bedeutet. Wenn das Mitglied bereits im angegebenen ZSET verfügbar ist, wird nur der Bewertungswert aktualisiert.

Wir sind alle gut, um fortzufahren. Lassen Sie uns also die verbleibenden vier Spieler zum ZSet: Pokemon: Raangboard hinzufügen.

Zadd Pokemon: Rangliste 0 Anna
Zadd Pokemon: Rangliste 0 Zakariah
Zadd Pokemon: Rangliste 0 Bob
Zadd Pokemon: Rangliste 0 Mary

ZRANGE -Befehl

Alle fünf Mitglieder wurden erfolgreich hinzugefügt. Als nächstes sollten wir die hinzugefügten Mitglieder mit dem Befehl ZRange untersuchen oder abfragen. Mit dem Befehl zrange ermöglicht das Abrufen von Mitgliedern, die in einem bestimmten Bereich sortiert sind. Ein Bereich kann durch Rang-, Score- oder Lexikografische Werte angegeben werden.

Fragen wir alle Mitglieder an, indem Sie den Bereich nach Rangwerten angeben.

Zrange Pokemon: Rangliste 0 -1

Wie erwartet wurden alle fünf Mitglieder zurückgegeben und lexikographisch angeordnet, weil die Punktzahlwerte für alle Mitglieder zu diesem Zeitpunkt gleich sind. Zusätzlich ist 0 der Startindex/Rang des Bereichs, und -1 bezeichnet den oberen Index des angegebenen ZSET.

Der Befehl ZRange bietet eine breite Palette optionaler Argumente, und wir werden das Argument mit dem With -Scores mit dem obigen Befehl verwenden, um die zugehörigen Bewertungen für jedes Mitglied anzuzeigen.

Zrange Pokemon: Rangliste 0 -1 mit Erscheinen

Zincrby -Befehl

Angenommen, die Spieler spielen das Spiel seit einigen Stunden und die Punktzahlen haben sich von 0 erhöht. Redis Zsets bieten den Befehl Zincrby, um die Punktzahlen jedes Mitglieds wie folgt zu erhöhen.

Zincrby Pokemon: Rangliste 100 Bob

Dies sollte den Wert des Mitglieds Bob von 0 auf 100 erhöhen. Rufen wir denselben Befehl an, um auch die Punktzahlen anderer Spieler zu erhöhen.

Zincrby Pokemon: Rangliste 200 Anna
Zincrby Pokemon: Rangliste 76 Zakariah
Zincrby Pokemon: Rangliste 450 Mary
Zincrby Pokemon: Rangliste 167 John

Gemäß den Rückgabewerten sollten die Bewertungen ordnungsgemäß aktualisiert werden müssen. Verwenden wir den Befehl Zrange einmal einmal, um die Mitglieder erneut mit ihren Punktzahlen abzurufen.

Bravo! Die Ergebnisse der Spieler wurden ordnungsgemäß aktualisiert. Darüber hinaus werden die Mitglieder durch ihre Punktzahlen in aufsteigender Reihenfolge bestellt, was ein cooles Merkmal von Redis -Zsets ist.

Zrevrank -Befehl

Es ist ein Muss, den Rang eines jeden Spielers auf einer Rangliste anzuzeigen. Der Befehl zrevrank wird also verwendet, um den Rang der Mitglieder anzuzeigen, in dem das mit der höchste Punktzahl verbundene Element der 0. Rang ist und der nächsthöhe der 1. Rang und so weiter sein wird.

Seit Mitglied Maria hat die höchste Punktzahl, dieses Element sollte als Top -Mitglied mit dem 0. Rang eingestuft werden. Verwenden wir den Befehl zrevrank wie folgt.

Zrevrank Pokemon: Rangliste Mary

Wie erwartet beträgt der Rang 0.

Verwenden wir den Befehl Zrevrank mit dem Element Zakaria wie folgt. Im Idealfall sollte es der letzte Rang sein, da dieses Mitglied den niedrigsten Wertwert hat.

ZREM -Befehl

Wenn wir ein Element oder mehrere Elemente von einem ZSET entfernen müssen, ist der Befehl ZREM nützlich. Lassen Sie uns Zakariah aufgrund seiner niedrigen Punktzahl aus der Rangliste entfernen.

Zrem Pokemon: Rangliste Zakariah

Es wurde ordnungsgemäß vom Zset entfernt.

Am wichtigsten ist, dass die ZSet -Befehle die Zeitkomplexität von O (log (n)) haben, wobei n die Anzahl der Elemente im sortierten Satz ist, was erheblich schneller ist. Gleichzeitig sollte der Befehl ZRange mit Vorsicht verwendet werden. Es kann also zu Leistungsproblemen führen, wenn sie mit größeren Datensätzen arbeiten.

Abschluss

Zusammenfassend ist Redis ZSET ein kurzer Name für einen sortierten Set -Datentyp, der eindeutige Mitglieder aufweisen kann, die nach ihren Bewertungswerten bestellt werden. Wie erläutert, sind die ZSet-Mitglieder nicht wiederholte Zeichenfolgen, und die Bewertungswerte können wiederholt werden. Wenn mehrere Mitglieder mit dem gleichen Wertwert zugewiesen werden, werden diese Mitglieder lexikographisch bestellt. ZSETs sind eine gute Wahl für Echtzeit-Bestenlisten, sekundäre Indizierung und vorrangige Warteschlangen mit höherer Reaktionsfähigkeit und geringer Latenz des Speicherzugriffs. Abschließend sind mehrere Befehle zur Verfügung.