In diesem Artikel wird die Verwendung von Redis -sortierten Sätzen für die effiziente Implementierung von Rangliste gezeigt. Es unterstreicht die Leistungsvorteile gegenüber Listen, Hash -Tabellen und relationalen Datenbanken und betont die Komplexität von O (log n) für Schlüsselvorgänge. Effizient s
Redis sortierte Sets sind ideal für die Implementierung von Bestenlisten, da sie von Natur aus Mitglieder (Spieler, Benutzer usw.) mit zugehörigen Punktzahlen (ihre Rangliste der Rangliste) speichern. Mit dem Befehl ZADD
können Sie Mitglieder hinzufügen oder aktualisieren, und deren Bewertungen effizient. Range -Abfragen werden dann mit Befehlen wie ZRANGE
, ZREVRANGE
, ZRANGEBYSCORE
und ZREVRANGEBYSCORE
durchgeführt.
Nehmen wir zum Beispiel an, wir bauen eine Rangliste für ein Spiel. Wir können Spieler vertreten, die ihre IDs als Mitglieder und ihre Punktzahlen als Punktzahlen im sortierten Satz verwenden.
ZADD leaderboard 100 player1 200 player2 50 player3
Dies fügt drei Spieler mit 100, 200, 200 bzw. 50 in der Rangliste hinzu.ZREVRANGE leaderboard 0 4 WITHSCORES
Erscheint die Top 5 Spieler (mit Punktzahlen) in absteigender Reihenfolge (höchste Punktzahl zuerst).ZRANGEBYSCORE leaderboard 100 200 WITHSCORES
Dies gibt alle Spieler mit Punktzahlen innerhalb des angegebenen Bereichs zurück.Redis -sortierte Sets bieten aufgrund ihrer optimierten internen Struktur erhebliche Leistungsvorteile gegenüber anderen Datenstrukturen für Bestenlisten. Hier ist ein Vergleich:
Das Aktualisieren von Bewertungen und Rängen in einem Redis -sortierten Satz ist dank des Befehls ZADD
ist sehr effizient. ZADD
aktualisiert atomisch die Punktzahl eines Mitglieds. Wenn das Mitglied nicht existiert, fügt es das Mitglied mit der angegebenen Punktzahl hinzu. Wenn es existiert, aktualisiert es seine Punktzahl. Dies gewährleistet die Datenkonsistenz auch unter hoher Parallelität.
Zum Beispiel zum Aktualisieren von Player1 von Player1 auf 150: ZADD leaderboard 150 player1
Für Szenarien, in denen Sie die Bewertungen inkrementieren oder verringern müssen, ist der Befehl ZINCRBY
effizienter: ZINCRBY leaderboard 50 player1
Dies erhöht die Punktzahl von Player1 um 50.
Betrachten Sie Strategien wie:
Redis sortierte Sets bieten eine hervorragende Unterstützung für Pagination und Filterung. Die Pagination kann leicht mit den Befehlen ZRANGE
und ZREVRANGE
mit LIMIT
erreicht werden:
ZREVRANGE leaderboard 0 9 WITHSCORES
ruft die Top 10 Spieler zurück.
ZREVRANGE leaderboard 10 19 WITHSCORES
RECORES-Spieler mit 11-20.
Die Filterung kann mit ZRANGEBYSCORE
durchgeführt werden und mit der Pagination mit LIMIT
kombiniert werden:
ZRANGEBYSCORE leaderboard 100 200 WITHSCORES LIMIT 0 10
holt die Top 10 Spieler mit Punktzahlen zwischen 100 und 200 zurück.
Für komplexere Filterkriterien (z. B. Filterung nach mehreren Attributen) müssen Sie möglicherweise separate sortierte Sets vorab, basierend auf unterschiedlichen Filterkriterien vorhanden oder eine Kombination aus Redis-Datenstrukturen und anwendungsseitigen Logik verwenden. Beispielsweise können Sie separate sortierte Sets für verschiedene Spielmodi oder Regionen verwenden.
Das obige ist der detaillierte Inhalt vonWie benutze ich Redis -sortierte Sets für Bestenlisten und Reichweite von Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!