Inhaltsverzeichnis
1. Übersicht
2. Was ist die Kardinalität?
3. Befehle
3.1 PFADD
3.2 PFCOUNT
3.3 PFMERGE
Heim Datenbank Redis So implementieren Sie Redis mit HyperLogLog

So implementieren Sie Redis mit HyperLogLog

May 26, 2023 pm 05:41 PM
redis hyperloglog

1. Übersicht

Redis hat in Version 2.8.9 die HyperLogLog-Datenstruktur hinzugefügt, die für Kardinalitätsstatistiken verwendet wird. Der Vorteil besteht darin, dass der zur Berechnung der Kardinalität erforderliche Platz relativ klein ist im Allgemeinen relativ konstant.

In Redis kostet jeder HyperLogLog-Schlüssel nur 12 KB Speicher, um die Kardinalität von fast 2^64 verschiedenen Elementen zu berechnen. Dies steht in scharfem Gegensatz zur Berechnung der Kardinalität, bei der eine Sammlung mit mehr Elementen mehr Speicher verbraucht. Da HyperLogLog die Kardinalität jedoch nur anhand der Eingabeelemente berechnet und die Eingabeelemente selbst nicht speichert, kann HyperLogLog nicht wie eine Sammlung einzelne Elemente der Eingabe zurückgeben.

2. Was ist die Kardinalität?

Zum Beispiel ist der Datensatz {1, 3, 5, 7, 5, 7, 8}, dann ist der Kardinalitätssatz dieses Datensatzes {1, 3, 5,7 , 8}, die Kardinalität (sich nicht wiederholende Elemente) beträgt 5. Bei der Kardinalitätsschätzung geht es darum, die Kardinalität schnell innerhalb des akzeptablen Fehlerbereichs zu berechnen.

3. Befehle

Derzeit werden nur drei Befehle, PFADD, PFCOUNT und PFMERGE, von HyperLogLog unterstützt. Lassen Sie uns sie zunächst einzeln vorstellen.

3.1 PFADD

Früheste verfügbare Version: 2.8.9. Zeitkomplexität: O(1). Der Befehl

PFADD kann Elemente (mehrere Elemente können angegeben werden) zur HyperLogLog-Datenstruktur hinzufügen und sie in dem durch den ersten Parameterschlüssel angegebenen Schlüssel speichern. Gibt 1 zurück, wenn sich die Kardinalitätsschätzung (Anzahl der ausgewerteten Elemente) geändert hat, andernfalls wird 0 zurückgegeben, d. h. um zu bestätigen, ob sich die Kardinalitätsschätzung nach der Ausführung des Befehls geändert hat. Wenn der angegebene Schlüssel nicht vorhanden ist, wird eine leere HyperLogLog-Datenstruktur erstellt (d. h. ein Redis-String mit der angegebenen String-Länge und -Codierung). Es ist auch möglich, den Befehl ohne Angabe eines Elementparameters und nur mit Angabe des Schlüssels aufzurufen. Wenn der Schlüssel vorhanden ist, tun Sie nichts und geben Sie 0 zurück. Wenn der Schlüssel nicht vorhanden ist, wird ein neuer HyperLogLog-Datenknoten erstellt und 1 zurückgegeben. Im Wesentlichen wird lediglich eine neue HyperLogLog-Datenstruktur generiert, ohne dass Elemente gespeichert werden.

(1) Syntaxformat:

PFADD key element [element ...]
Nach dem Login kopieren

(2) Rückgabewert:

Ganzzahl, wenn mindestens ein Element hinzugefügt wird, wird 1 zurückgegeben, andernfalls wird 0 zurückgegeben.

(3) Beispiel:

127.0.0.1:6379> PFADD hll a b c d e f g
(integer) 1
127.0.0.1:6379> pfcount hll
(integer) 7
Nach dem Login kopieren

3.2 PFCOUNT

Früheste verfügbare Version: 2.8.9. Zeitkomplexität: O(1). Für mehrere relativ große Schlüssel beträgt die Zeitkomplexität O(N).

Verwenden Sie den Befehl PFCOUNT, um einen geschätzten HyperLogLog-Kardinalitätswert (d. h. die Anzahl der Elemente) zu erhalten. Dieser Befehl gibt 0 zurück, wenn der Schlüssel nicht existiert, andernfalls gibt er eine Schätzung der Kardinalität des Schlüssels zurück. Bei mehreren Schlüsseln wird eine Kardinalitätsschätzung für die Vereinigung mehrerer HyperLogLogs zurückgegeben, die durch Zusammenführen mehrerer HyperLogLogs zu einem temporären HyperLogLog berechnet wird. Mit einer minimalen und konsistenten Speichermenge kann HyperLogLog die Anzahl der eindeutigen Elemente einer Sammlung zählen. Jedes HyperLogLog verwendet nur 12 KB plus ein paar Bytes des Schlüssels selbst.

(1) Syntaxformat:

PFCOUNT key [key ...]
Nach dem Login kopieren

(2) Rückgabewert:

integer, gibt die Kardinalitätsschätzung des angegebenen HyperLogLogs zurück. Wenn mehrere HyperLogLogs vorhanden sind, wird die Kardinalitätsschätzung der Union zurückgegeben.

(3) Beispiel:

127.0.0.1:6379> PFADD hll foo bar zap
(integer) 1
127.0.0.1:6379> PFADD hll zap zap zap
(integer) 0
127.0.0.1:6379> PFADD hll foo bar
(integer) 0
127.0.0.1:6379> PFCOUNT hll
(integer) 3
127.0.0.1:6379> PFADD some-other-hll 1 2 3
(integer) 1
127.0.0.1:6379> PFCOUNT some-other-hll
(integer) 3
127.0.0.1:6379> PFCOUNT hll some-other-hll
(integer) 6
Nach dem Login kopieren

(4) Einschränkung: Die von

HyperLogLog zurückgegebenen Ergebnisse sind nicht genau und die Fehlerquote beträgt etwa 0,81 %.

Mit diesem Befehl wird HyperLogLog geändert und 8 Bytes zum Speichern der zuletzt berechneten Basis verwendet. Technisch gesehen ist PFCOUNT also ein Schreibbefehl.

(5) Leistungsprobleme

Auch wenn die Verarbeitung eines intensiven HyperLogLog theoretisch länger dauert, weist der Befehl PFCOUNT immer noch eine hohe Leistung auf, wenn nur ein Schlüssel angegeben wird. Dies liegt daran, dass PFCOUNT die Basis der letzten Berechnung zwischenspeichert und sich diese Basis nicht ständig ändert, da der Befehl PFADD das Register in den meisten Fällen nicht aktualisiert. Daher kann der Effekt von Hunderten von Anfragen pro Sekunde erzielt werden.

Wenn Sie den Befehl PFCOUNT verwenden, um mehrere Schlüssel zu verarbeiten, wird HyperLogLog zusammengeführt. Noch wichtiger ist, dass die berechnete Kardinalität der Vereinigung nicht zwischengespeichert werden kann. Bei Verwendung mehrerer Schlüssel kann die Ausführung von PFCOUNT einige Zeit dauern (normalerweise in der Größenordnung von Millisekunden), daher wird eine übermäßige Verwendung nicht empfohlen.

Es ist zu beachten, dass die Einzelschlüssel- und Mehrschlüssel-Ausführungssemantik dieses Befehls unterschiedlich ist und eine unterschiedliche Leistung aufweist. Eine übermäßige Verwendung der Mehrschlüssel-Ausführungssemantik wird nicht empfohlen.

3.3 PFMERGE

Früheste verfügbare Version: 2.8.9. Zeitkomplexität: O(N), N ist die Anzahl der zusammenzuführenden HyperLogLogs.

Mehrere HyperLogLogs können über den Befehl PFMERGE zu einem HyperLogLog zusammengeführt werden. Die Kardinalitätsschätzung des zusammengeführten HyperLogLog wird berechnet, indem die Vereinigung aller gegebenen HyperLogLogs gebildet wird. Das berechnete Ergebnis wird auf dem angegebenen Schlüssel gespeichert.

Syntaxformat:

PFMERGE destkey sourcekey [sourcekey ...]
Nach dem Login kopieren

Rückgabewert:

Rückgabe OK.

Beispiel:

127.0.0.1:6379> PFADD hll1 foo bar zap a
(integer) 1
127.0.0.1:6379> PFADD hll2 a b c foo
(integer) 1
127.0.0.1:6379> PFMERGE hll3 hll1 hll2
OK
127.0.0.1:6379> PFCOUNT hll3
(integer) 6
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Redis mit HyperLogLog. 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
4 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.

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 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 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.

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 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.

So setzen Sie die Redis -Ablaufpolitik So setzen Sie die Redis -Ablaufpolitik Apr 10, 2025 pm 10:03 PM

Es gibt zwei Arten von RETIS-Datenverlaufstrategien: regelmäßige Löschung: periodischer Scan zum Löschen des abgelaufenen Schlüssels, der über abgelaufene Cap-Remove-Count- und Ablauf-Cap-Remove-Delay-Parameter festgelegt werden kann. LAZY LELETION: Überprüfen Sie nur, ob abgelaufene Schlüsseln gelöscht werden, wenn Tasten gelesen oder geschrieben werden. Sie können durch LazyFree-Lazy-Eviction, LazyFree-Lazy-Expire, LazyFree-Lazy-User-Del-Parameter eingestellt werden.

See all articles