Inhaltsverzeichnis
1. Hintergrund
2. Szenario 1: Wörterbuchvervollständigung
2.1 Basislösung
2.2 Häufigkeitsbezogene Wörterbuchvervollständigung
Gaussian Redis unterstützt nicht nur Abfragen in einer einzelnen Dimension, sondern kann auch mehrdimensionale Daten abrufen. Suchen Sie beispielsweise nach Personen, die die folgenden Kriterien erfüllen: Alter zwischen 50 und 55 Jahren und Gehalt zwischen 70.000 und 85.000. Die Konvertierung zweidimensionaler Datenkodierung in eindimensionale Daten und die anschließende Verwendung des Gaußschen verteilten Redis-Zset-Speichers ist eine wichtige Methode zur Implementierung mehrdimensionaler Sekundärindizes.
Wenn der eingefügte Datenpunkt x = 75 und y = 200 ist
3.2 添加新元素
3.3 查询
Heim Datenbank Redis So verwenden Sie Gaussian Redis zum Implementieren eines Sekundärindex

So verwenden Sie Gaussian Redis zum Implementieren eines Sekundärindex

Jun 02, 2023 pm 06:53 PM
redis

1. Hintergrund

Wenn es um die Indizierung geht, ist der erste Eindruck der Begriff Datenbank, aber Gaussian Redis kann auch eine sekundäre Indizierung implementieren! ! ! Sekundärindizes in Gaussian Redis werden im Allgemeinen mit zset implementiert. Gaussian Redis bietet höhere Stabilität und Kostenvorteile als Open-Source-Redis. Durch die Verwendung von Gaussian Redis zset zur Implementierung von Geschäftssekundärindizes kann eine Win-Win-Situation in Bezug auf Leistung und Kosten erzielt werden.

Der Kern der Indizierung besteht darin, geordnete Strukturen zu verwenden, um Abfragen zu beschleunigen, sodass numerische und Zeichentypindizes einfach über die Zset-Struktur Gaussian Redis implementiert werden können.

• Numerischer Typindex (zset ist nach Bewertung sortiert):

So verwenden Sie Gaussian Redis zum Implementieren eines Sekundärindex

So verwenden Sie Gaussian Redis zum Implementieren eines Sekundärindex

• Zeichentypindex (zset ist nach lexikografischer Reihenfolge sortiert, wenn die Bewertungen gleich sind):

So verwenden Sie Gaussian Redis zum Implementieren eines Sekundärindex

So verwenden Sie Gaussian Redis zum Implementieren eines Sekundärindex

Schauen wir uns zwei Arten klassischer Geschäftsszenarien an und sehen wir uns an, wie man mit Gaussian Redis ein stabiles und zuverlässiges Sekundärindexsystem aufbaut.

2. Szenario 1: Wörterbuchvervollständigung

Beim Eingeben einer Abfrage im Browser empfiehlt der Browser normalerweise Suchvorgänge mit demselben Präfix basierend auf der Wahrscheinlichkeit. Dieses Szenario kann mithilfe der sekundären Indexfunktion von Gaussian Redis realisiert werden.

So verwenden Sie Gaussian Redis zum Implementieren eines Sekundärindex

2.1 Basislösung

Der einfachste Weg besteht darin, jede Abfrage des Benutzers zum Index hinzuzufügen. Wenn Sie Benutzern Eingabeaufforderungen zur Vervollständigung bereitstellen müssen, können Sie ZRANGEBYLEX verwenden, um Bereichsabfragen durchzuführen. Um die Anzahl der Ergebnisse zu reduzieren, ist die Verwendung der LIMIT-Option eine von Gaussian Redis unterstützte Methode.

• Benutzersuchbanane zum Index hinzufügen:

ZADD myindex 0 banana:1
Nach dem Login kopieren
Nach dem Login kopieren

• Angenommen, der Benutzer gibt „bit“ in das Suchformular ein und wir möchten Suchbegriffe bereitstellen, die mit „bit“ beginnen können.

ZRANGEBYLEX myindex "[bit" "[bit\xff"
Nach dem Login kopieren

Das heißt, verwenden Sie ZRANGEBYLEX, um eine Bereichsabfrage durchzuführen. Der Abfragebereich ist die aktuell vom Benutzer eingegebene Zeichenfolge und dieselbe Zeichenfolge plus ein nachfolgendes Byte von 255 (xff). Mit dieser Methode können wir alle Zeichenfolgen abrufen, denen die vom Benutzer eingegebene Zeichenfolge vorangestellt ist.

2.2 Häufigkeitsbezogene Wörterbuchvervollständigung

In praktischen Anwendungen möchten Benutzer normalerweise Vervollständigungsbegriffe automatisch sortieren, um sie an die Häufigkeit des Auftretens anzupassen, nicht mehr beliebte Begriffe eliminieren und gleichzeitig an zukünftige Eingaben anpassen. Wir können weiterhin die ZSet-Struktur von Gaussian Redis verwenden, um dieses Ziel zu erreichen, aber in der Indexstruktur müssen nicht nur die Suchbegriffe, sondern auch die damit verbundenen Häufigkeiten gespeichert werden.

• Benutzersuchbanane zum Index hinzufügen

ZRANGEBYLEX myindex "[banana:" + LIMIT 0 1
Nach dem Login kopieren

• Angenommen, Banane existiert nicht, 1 ist die Häufigkeit

ZADD myindex 0 banana:1
Nach dem Login kopieren
Nach dem Login kopieren

• Angenommen, Banane existiert, Bedarf um die Häufigkeit zu erhöhen

Wenn die in ZRANGEBYLEX myindex „[banana:“ + LIMIT 0 1 zurückgegebene Häufigkeit 1 ist

1) Löschen Sie den alten Eintrag:

ZREM myindex 0 banana:1
Nach dem Login kopieren

2) Fügen Sie die Häufigkeit um eins hinzu und treten Sie erneut bei:

ZADD myindex 0 banana:2
Nach dem Login kopieren

Bitte Beachten Sie, dass aufgrund der Möglichkeit gleichzeitiger Aktualisierungen die oben genannten drei Befehle über ein Lua-Skript gesendet werden sollten, das automatisch die alte Zählung abruft und den Eintrag nach der Erhöhung der Punktzahl erneut hinzufügt.

Wenn der Benutzer „Banane“ in das Suchformular eingibt, hoffen wir, relevante Suchbegriffe bereitzustellen. Sortieren Sie nach Häufigkeit, nachdem Sie Ergebnisse über ZRANGEBYLEX erhalten haben.

ZRANGEBYLEX myindex "[banana:" + LIMIT 0 10
1) "banana:123"
2) "banaooo:1"
3) "banned user:49"
4) "banning:89"
Nach dem Login kopieren

• Verwenden Sie den Streaming-Algorithmus, um selten verwendete Eingaben zu bereinigen. Wählen Sie zufällig einen zurückgegebenen Eintrag aus, subtrahieren Sie eins von seiner Punktzahl und addieren Sie ihn dann wieder mit der aktualisierten Punktzahl. Wenn die neue Punktzahl jedoch 0 ist, müssen wir den Eintrag aus der Liste entfernen.

• Wenn die Häufigkeit zufällig ausgewählter Einträge 1 beträgt, z. B. banaooo:1

ZREM myindex 0 banaooo:1
Nach dem Login kopieren

• Wenn die Häufigkeit zufällig ausgewählter Einträge größer als 1 ist, z. B. banane:123

ZREM myindex 0 banana:123
ZADD myindex 0 banana:122
Nach dem Login kopieren

Der Index umfasst beliebte Suchanfragen. Er passt sich auch automatisch an, wenn sich beliebte Suchanfragen im Laufe der Zeit ändern.

3. Szenario 2: Mehrdimensionaler Index

Gaussian Redis unterstützt nicht nur Abfragen in einer einzelnen Dimension, sondern kann auch mehrdimensionale Daten abrufen. Suchen Sie beispielsweise nach Personen, die die folgenden Kriterien erfüllen: Alter zwischen 50 und 55 Jahren und Gehalt zwischen 70.000 und 85.000. Die Konvertierung zweidimensionaler Datenkodierung in eindimensionale Daten und die anschließende Verwendung des Gaußschen verteilten Redis-Zset-Speichers ist eine wichtige Methode zur Implementierung mehrdimensionaler Sekundärindizes.

Stellen Sie den zweidimensionalen Index aus einer visuellen Perspektive dar. In diesem Raum gibt es einige Datenabtastpunkte, die als Koordinaten (x, y) dargestellt werden, und die Maximalwerte der x- und y-Variablen in diesen Koordinaten betragen 400. Das blaue Kästchen im Bild stellt unsere Anfrage dar. Wir wollen alle Punkte mit den Koordinaten x zwischen 50 und 100 und y zwischen 100 und 300 finden.

So verwenden Sie Gaussian Redis zum Implementieren eines Sekundärindex3.1 Datenkodierung

Wenn der eingefügte Datenpunkt x = 75 und y = 200 ist

1) Geben Sie 0 ein (die maximalen Daten sind 400, geben Sie also 3 Ziffern ein)

x = 075

y = 200

2)交织数字,以x表示最左边的数字,以y表示最左边的数字,依此类推,以便创建一个编码

027050

若使用00和99替换最后两位,即027000 to 027099,map回x和y,即:

x = 70-79

y = 200-209

因此,针对x=70-79和y = 200-209的二维查询,可以通过编码map成027000 to 027099的一维查询,这可以通过高斯Redis的Zset结构轻松实现。

So verwenden Sie Gaussian Redis zum Implementieren eines Sekundärindex

同理,我们可以针对后四/六/etc位数字进行相同操作,从而获得更大范围。

3)使用二进制

如果将数据表示为二进制,就可以获得更细的粒度,而在数字替换时,每次都将搜索范围扩大两倍。如果我们使用二进制表示法数字,每个变量最多需要9位(表示最多400个值),那么我们将得到:

x = 75 -> 001001011

y = 200 -> 011001000

交织后,000111000011001010

让我们看看在交错表示中用0s ad 1s替换最后的2、4、6、8,...位时我们的范围是什么:

So verwenden Sie Gaussian Redis zum Implementieren eines Sekundärindex

3.2 添加新元素

若插入数据点为x = 75和y = 200

x = 75和y = 200二进制交织编码后为000111000011001010,

ZADD myindex 0 000111000011001010
Nach dem Login kopieren

3.3 查询

查询:x介于50和100之间,y介于100和300之间的所有点

从索引中替换N位会给我们边长为2^(N/2)的搜索框。因此,我们要做的是检查搜索框较小的尺寸,并检查与该数字最接近的2的幂,并不断切分剩余空间,随后用ZRANGEBYLEX进行搜索。

下面是示例代码:

def spacequery(x0,y0,x1,y1,exp)
    bits=exp*2
    x_start = x0/(2**exp)
    x_end = x1/(2**exp)
    y_start = y0/(2**exp)
    y_end = y1/(2**exp)
    (x_start..x_end).each{|x|
        (y_start..y_end).each{|y|
            x_range_start = x*(2**exp)
            x_range_end = x_range_start | ((2**exp)-1)
            y_range_start = y*(2**exp)
            y_range_end = y_range_start | ((2**exp)-1)
            puts "#{x},#{y} x from #{x_range_start} to #{x_range_end}, y from #{y_range_start} to #{y_range_end}"
            # Turn it into interleaved form for ZRANGEBYLEX query.
            # We assume we need 9 bits for each integer, so the final
            # interleaved representation will be 18 bits.
            xbin = x_range_start.to_s(2).rjust(9,'0')
            ybin = y_range_start.to_s(2).rjust(9,'0')
            s = xbin.split("").zip(ybin.split("")).flatten.compact.join("")
            # Now that we have the start of the range, calculate the end
            # by replacing the specified number of bits from 0 to 1.
            e = s[0..-(bits+1)]+("1"*bits)
            puts "ZRANGEBYLEX myindex [#{s} [#{e}"
        }
    }
end
spacequery(50,100,100,300,6)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Gaussian Redis zum Implementieren eines Sekundärindex. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So erstellen Sie den Redis -Clustermodus So erstellen Sie den Redis -Clustermodus Apr 10, 2025 pm 10:15 PM

Der Redis -Cluster -Modus bietet Redis -Instanzen durch Sharding, die Skalierbarkeit und Verfügbarkeit verbessert. Die Bauschritte sind wie folgt: Erstellen Sie ungerade Redis -Instanzen mit verschiedenen Ports; Erstellen Sie 3 Sentinel -Instanzen, Monitor -Redis -Instanzen und Failover; Konfigurieren von Sentinel -Konfigurationsdateien, Informationen zur Überwachung von Redis -Instanzinformationen und Failover -Einstellungen hinzufügen. Konfigurieren von Redis -Instanzkonfigurationsdateien, aktivieren Sie den Cluster -Modus und geben Sie den Cluster -Informationsdateipfad an. Erstellen Sie die Datei nodes.conf, die Informationen zu jeder Redis -Instanz enthält. Starten Sie den Cluster, führen Sie den Befehl erstellen aus, um einen Cluster zu erstellen und die Anzahl der Replikate anzugeben. Melden Sie sich im Cluster an, um den Befehl cluster info auszuführen, um den Clusterstatus zu überprüfen. machen

So implementieren Sie die zugrunde liegenden Redis So implementieren Sie die zugrunde liegenden Redis Apr 10, 2025 pm 07:21 PM

Redis verwendet Hash -Tabellen, um Daten zu speichern und unterstützt Datenstrukturen wie Zeichenfolgen, Listen, Hash -Tabellen, Sammlungen und geordnete Sammlungen. Ernähren sich weiterhin über Daten über Snapshots (RDB) und appendiert Mechanismen nur Schreibmechanismen. Redis verwendet die Master-Slave-Replikation, um die Datenverfügbarkeit zu verbessern. Redis verwendet eine Ereignisschleife mit einer Thread, um Verbindungen und Befehle zu verarbeiten, um die Datenatomizität und Konsistenz zu gewährleisten. Redis legt die Ablaufzeit für den Schlüssel fest und verwendet den faulen Löschmechanismus, um den Ablaufschlüssel zu löschen.

So sehen Sie alle Schlüssel in Redis So sehen Sie alle Schlüssel in Redis Apr 10, 2025 pm 07:15 PM

Um alle Schlüssel in Redis anzuzeigen, gibt es drei Möglichkeiten: Verwenden Sie den Befehl keys, um alle Schlüssel zurückzugeben, die dem angegebenen Muster übereinstimmen. Verwenden Sie den Befehl scan, um über die Schlüssel zu iterieren und eine Reihe von Schlüssel zurückzugeben. Verwenden Sie den Befehl Info, um die Gesamtzahl der Schlüssel zu erhalten.

So sehen Sie die Versionsnummer der Redis So sehen Sie die Versionsnummer der Redis Apr 10, 2025 pm 05:57 PM

Um die Redis -Versionsnummer anzuzeigen, können Sie die folgenden drei Methoden verwenden: (1) Geben Sie den Info -Befehl ein, (2) Starten Sie den Server mit der Option --version und (3) die Konfigurationsdatei anzeigen.

Was tun, wenn Redis-Server nicht gefunden werden kann Was tun, wenn Redis-Server nicht gefunden werden kann Apr 10, 2025 pm 06:54 PM

Schritte zur Lösung des Problems, das Redis-Server nicht finden kann: Überprüfen Sie die Installation, um sicherzustellen, dass Redis korrekt installiert ist. Setzen Sie die Umgebungsvariablen Redis_host und Redis_port; Starten Sie den Redis-Server Redis-Server; Überprüfen Sie, ob der Server Redis-Cli Ping ausführt.

So verwenden Sie Redis Zset So verwenden Sie Redis Zset Apr 10, 2025 pm 07:27 PM

Redis bestellte Sets (ZSETs) werden verwendet, um bestellte Elemente und Sortieren nach zugehörigen Bewertungen zu speichern. Die Schritte zur Verwendung von ZSET umfassen: 1. Erstellen Sie ein Zset; 2. Fügen Sie ein Mitglied hinzu; 3.. Holen Sie sich eine Mitgliederbewertung; 4. Holen Sie sich eine Rangliste; 5. Holen Sie sich ein Mitglied in der Rangliste; 6. Ein Mitglied löschen; 7. Holen Sie sich die Anzahl der Elemente; 8. Holen Sie sich die Anzahl der Mitglieder im Score -Bereich.

So verwenden Sie den Befehl Redis So verwenden Sie den Befehl Redis Apr 10, 2025 pm 08:45 PM

Die Verwendung der REDIS -Anweisung erfordert die folgenden Schritte: Öffnen Sie den Redis -Client. Geben Sie den Befehl ein (Verbschlüsselwert). Bietet die erforderlichen Parameter (variiert von der Anweisung bis zur Anweisung). Drücken Sie die Eingabetaste, um den Befehl auszuführen. Redis gibt eine Antwort zurück, die das Ergebnis der Operation anzeigt (normalerweise in Ordnung oder -err).

So lesen Sie den Quellcode von Redis So lesen Sie den Quellcode von Redis Apr 10, 2025 pm 08:27 PM

Der beste Weg, um Redis -Quellcode zu verstehen, besteht darin, Schritt für Schritt zu gehen: Machen Sie sich mit den Grundlagen von Redis vertraut. Wählen Sie ein bestimmtes Modul oder eine bestimmte Funktion als Ausgangspunkt. Beginnen Sie mit dem Einstiegspunkt des Moduls oder der Funktion und sehen Sie sich die Codezeile nach Zeile an. Zeigen Sie den Code über die Funktionsaufrufkette an. Kennen Sie die von Redis verwendeten Datenstrukturen. Identifizieren Sie den von Redis verwendeten Algorithmus.

See all articles