Heim  >  Artikel  >  Datenbank  >  Informationen zur Implementierung einer Rangliste durch Java basierend auf der von Redis geordneten Sammlung

Informationen zur Implementierung einer Rangliste durch Java basierend auf der von Redis geordneten Sammlung

藏色散人
藏色散人nach vorne
2020-09-11 13:22:502098Durchsuche

Die Spalte Redis-Tutorial stellt Ihnen die Implementierung der Rangliste in Java basierend auf dem von Redis bestellten Satz vor. Ich hoffe, dass sie Freunden in Not hilfreich sein wird!

Informationen zur Implementierung einer Rangliste durch Java basierend auf der von Redis geordneten Sammlung

Vorwort

Als fast unverzichtbares Element in Internetanwendungen können Rankings den Wunsch nach Vergleichen wecken. Es gibt auch Möglichkeiten, Rankings wie Produktverkaufsrankings in einem bestimmten Schatz, Rankings zur Reputation von Geschäften usw. umzusetzen. Es gibt viele Möglichkeiten, den Schnellsortierungsalgorithmus zu verwenden und die Comparator-Schnittstelle zu implementieren, um nach einer bestimmten Gewichtung zu sortieren. Jetzt verwenden viele Unternehmen Redis, eine NoSQL-Datenbank, um die Ranking-Funktion zu implementieren Was wir jetzt tun müssen, ist, das Unternehmensranking auszuwerten. Der Ranking-Standard ist die Anzahl der Benutzersuchen nach dem Unternehmen und ein Ranking der Top-Ten-Unternehmen Die Implementierung der Ranking-Funktion ist eine Sortiermenge (geordnete Menge).

Über die Sortiermenge

Eines der Merkmale einer Menge ist, dass sie keine doppelten Elemente enthält Elemente hat eine Sortiermenge auch eine weitere Eigenschaft, nämlich Ordnung.

Zusammensetzung der Datenstruktur:

Schlüssel: die eindeutige Kennung des Sortiersatzes

Gewicht: auch Score (Score) genannt. Redis sortiert die Elemente im Satz in aufsteigender Reihenfolge nach Gewicht (Standard), das Gewicht kann wiederholt werden

Wert: Set-Element, Elemente sind nicht wiederholbar

String(set key),double(权重),String(value)
    Sortiersatz wird über eine Hash-Tabelle implementiert, daher beträgt die zeitliche Komplexität des Hinzufügens, der Funktionen und der Suche O(1). Jeder Satz kann mehr als 4 Milliarden Elemente speichern
  • Grundlegende Befehle
  • Fügen Sie ein oder mehrere Elemente zum Satz hinzu (Gewicht)
ZADD "KEY" SCORE "VALUE" [ SCORE "VALUE"]

Effekt

MyRedis:0>ZADD test 1 "one""1"MyRedis:0>zadd test 4 "four" 5 "five""2"

Erhöhen Sie die angegebene Punktzahl für das angegebene Element des angegebenen Satzes

ZCARD "key"
Effekt:

MyRedis:0>ZCARD test"5"

Erhalten Sie die Elemente im angegebenen Bereich (Standard in aufsteigender Reihenfolge von. Punktzahl|Gewicht)

ZSCORE "KEY" "VALUE"
Effekt

MyRedis:0>ZSCORE "test" "one""2"

Es sind ungefähr so ​​viele Befehle erforderlich, um diese Anforderung zu erfüllen, und dann beginnen wir, unsere Anforderungen zu erkennen

2. Springboot + Redis-ImplementierungRedis-Abhängigkeiten importieren

ZINCRBY "key" score "value"

Schreiben von Tool-Klassen

MyRedis:0>ZSCORE "test" "one""2"MyRedis:0>ZINCRBY "test" 1 "one""3"MyRedis:0>ZSCORE "test" "one" "3"

Geschäftsimplementierung:

Da das Ranking hohe Echtzeitanforderungen stellt, denke ich persönlich, dass es nicht notwendig ist, in der Datenbank zu bleiben

Ein weiteres Problem ist das Ranking-Problem mit der gleichen Punktzahl.

Wenn ich möchte, dass A derjenige ist, der zuerst angekommen ist, vor B, der die gleiche Punktzahl hat, aber später angekommen ist.

Um dieses Problem zu lösen, können wir erwägen, der Punktzahl einen Zeitstempel hinzuzufügen. Die Berechnungsformel lautet:

ZRANGE "key" 开始下标 结束下标
Dieses Unternehmen kann es mit der Zeit selbst schreiben, um den Fehler so weit wie möglich zu reduzieren

Das obige ist der detaillierte Inhalt vonInformationen zur Implementierung einer Rangliste durch Java basierend auf der von Redis geordneten Sammlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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