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

So implementieren Sie die Ranking-Funktion mit Redis

藏色散人
藏色散人nach vorne
2020-08-13 11:45:244535Durchsuche

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

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

ZINCRBY rank:20150401 1 2
ZINCRBY rank:20150401 10 3

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
1) "2"
2) "1"
3) "1"
4) "5"
5) "3"
6) "10"

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

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

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

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

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

„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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen