Heim > Datenbank > Redis > So implementieren Sie die Ranking-Funktion mit Redis

So implementieren Sie die Ranking-Funktion mit Redis

藏色散人
Freigeben: 2020-08-13 11:45:24
nach vorne
4597 Leute haben es durchsucht

In der Kolumne Redis-Tutorial erfahren Sie, wie Sie Redis zur Implementierung der Ranking-Funktion verwenden. Ich hoffe, dass sie Freunden in Not hilfreich sein wird!

So implementieren Sie die Ranking-Funktion mit Redis

Die Ranking-Funktion ist eine sehr häufige Forderung. Die Verwendung der Funktion „Ordered Set“ in Redis zur Implementierung der Rangliste ist eine gute und schnelle Wahl.

Allgemeine Ranglisten sind wirksam, z. B. „Benutzerpunkteliste“. Wenn es keine Effektivität gibt und das Ranking immer auf dem Gesamtranking basiert, stehen möglicherweise immer ein paar alte Benutzer ganz oben auf der Liste. Für neue Benutzer ist das wirklich frustrierend.

Nehmen wir zunächst eine „Liste der heutigen Punkte“. Die Sortierregel erfolgt von den meisten bis zu den wenigsten neuen Punkten, die heute von Benutzern hinzugefügt wurden.

Wenn der Benutzer dann Punkte hinzufügt, führt er oder sie eine geordnete Sammlung durch, die den Punkteanstieg für den Tag aufzeichnet.
Angenommen, heute ist der 1. April 2015 und der Benutzer mit UID 1 hat durch einen bestimmten Vorgang 5 Punkte erhalten.
Der Redis-Befehl lautet wie folgt:

ZINCRBY rank:20150401 5 1
Nach dem Login kopieren

Angenommen, mehrere andere Benutzer haben ebenfalls Punkte hinzugefügt:

ZINCRBY rank:20150401 1 2
ZINCRBY rank:20150401 10 3
Nach dem Login kopieren

Sehen Sie sich die Daten im aktuellen geordneten Satzrang an: 20150401 (der Parameter „withscores“ kann verwendet werden, um die Punktzahl des Elements zu erhalten ):

ZRANGE rank:20150401 0 -1 withscores
Nach dem Login kopieren
1) "2"
2) "1"
3) "1"
4) "5"
5) "3"
6) "10"
Nach dem Login kopieren

Folgen Die Bewertungen sind von hoch nach niedrig, und die Top 10 werden erhalten:

ZREVRANGE rank:20150401 0 9 withscores
Nach dem Login kopieren
1) "3"
2) "10"
3) "1"
4) "5"
5) "2"
6) "1"
Nach dem Login kopieren

Da es nur drei Elemente gibt, wurden diese Daten abgefragt.

Wenn Sie jeden Tag die Punktewertung des Tages aufzeichnen, werden andere Listen mit allen möglichen Tricks einfach.
Zum Beispiel „Stand von gestern“:

ZREVRANGE rank:20150331 0 9 withscores
Nach dem Login kopieren

Verwenden Sie die Vereinigung, um die Summe der Punkte mehrerer Tage zu realisieren, um „Stand von letzter Woche“ zu ermitteln:

ZUNIONSTORE rank:last_week 7 rank:20150323 rank:20150324 rank:20150325 rank:20150326 rank:20150327 rank:20150328 rank:20150329 WEIGHTS 1 1 1 1 1 1 1
Nach dem Login kopieren

Auf diese Weise werden die 7-Tage-Punktedatensätze zum geordneten Satz zusammengeführt rank:last_week . Gewichtungsfaktor WEIGHTS Wenn nicht angegeben, ist der Standardwert 1. Um die Details nicht zu verheimlichen, habe ich sie bewusst ausgeschrieben.
Dann lauten die Informationen zum Abfragen der Top 10 in der Rangliste der letzten Woche:

ZREVRANGE rank:last_week  0 9 withscores
Nach dem Login kopieren

„Monatsliste“, „Vierteljahresliste“, „Jahresliste“ usw. und so weiter.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Ranking-Funktion mit Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage