Inhaltsverzeichnis
1. Was ist Big Key?
2. Die Szene, in der Big Key auftritt?
3. Was sind die Gefahren von Big Key?
4. Wie erkennt man Big Key?
o2o: order:1
Heim Datenbank Redis So lösen Sie das Big-Key-Problem in Redis

So lösen Sie das Big-Key-Problem in Redis

May 27, 2023 pm 02:41 PM
redis

1. Was ist Big Key?

Einfach ausgedrückt bedeutet Big Key, dass der Wert, der einem bestimmten Schlüssel entspricht, sehr groß ist und viel Redis-Speicherplatz einnimmt. Es handelt sich im Wesentlichen um ein großes Wertproblem. Der Schlüssel kann häufig vom Programm selbst festgelegt werden, der Wert wird jedoch häufig nicht vom Programm gesteuert, sodass der Wert möglicherweise sehr groß ist.

Die diesen Big Keys entsprechenden Werte in Redis sind sehr groß und nehmen im Serialisierungs-/Deserialisierungsprozess viel Zeit in Anspruch. Daher ist die Bedienung von Big Key normalerweise zeitaufwändig, was zu einer Blockierung von Redis führen kann . Dadurch wird die Redis-Leistung reduziert.

Verwenden Sie mehrere praktische Beispiele, um die Eigenschaften großer Schlüssel zu beschreiben:

● Ein Schlüssel vom Typ String, sein Wert beträgt 5 MB (Daten sind zu groß);

● Ein Schlüssel vom Typ Liste, seine Anzahl an Listen beträgt 20.000 ( zu viele Listen);

● Ein Schlüssel vom Typ ZSet mit 10.000 Mitgliedern (zu viele Mitglieder);

● Ein Schlüssel im Hash-Format mit nur 1.000 Mitgliedern, aber die Gesamtwertgröße dieser Mitglieder beträgt 100 MB (die Mitgliedsgröße ist zu groß) ;

Im tatsächlichen Geschäft muss die Bestimmung großer Schlüssel noch umfassend anhand der tatsächlichen Nutzungsszenarien und Geschäftsszenarien von Redis beurteilt werden. Normalerweise wird es anhand der Größe der Daten und der Anzahl der Mitglieder beurteilt.

2. Die Szene, in der Big Key auftritt?

1. Unsachgemäße Verwendung der Redis-Datenstruktur

Die Verwendung von Redis in Szenarien, die für seine Funktionen nicht geeignet sind, führt dazu, dass der Wert des Schlüssels zu groß ist, wie z. B. die Verwendung eines Schlüssels vom Typ String zum Speichern großer Binärdateidaten.

2. Versäumnis, Junk-Daten rechtzeitig zu bereinigen

Da ungültige Daten nicht regelmäßig bereinigt werden, steigt die Anzahl der Mitglieder im HASH-Typschlüssel weiter an. Der Wert erhöht sich unendlich, da nur weiterhin Daten ohne Löschmechanismus empfangen werden.

3. Ungenaue Geschäftsschätzungen

Unzureichende Berücksichtigung bei der Planung und Gestaltung vor der Geschäftsgründung und die Mitglieder im Schlüssel wurden nicht sinnvoll aufgeteilt, was dazu führte, dass es zu viele Mitglieder in einzelnen Schlüsseln gab.

4. Liste der Fans von Prominenten und Internet-Prominenten sowie eine Liste von Kommentaren zu einer bestimmten aktuellen Nachricht.

Angenommen, wir verwenden die Listendatenstruktur, um die Fans eines bestimmten Prominenten/Internet-Prominenten zu speichern Liste der Kommentare zu heißen Nachrichten, da die Anzahl der Fans riesig ist. Heiße Nachrichten haben viele Klickraten und Kommentare, daher werden viele Elemente in der Listensammlung gespeichert, was dazu führen kann, dass der Wert zu niedrig ist groß, was ein Big-Key-Problem verursacht.

3. Was sind die Gefahren von Big Key?

1. Blockieren von Anfragen

Der Wert, der Big Key entspricht, ist relativ groß. Wenn wir ihn lesen und schreiben, dauert es lange, was die nachfolgende Anforderungsverarbeitung blockieren kann. Der Kernthread von Redis ist Single-Threaded, was bedeutet, dass alle Anforderungen seriell verarbeitet werden. Wenn die vorherige Anforderung nicht abgeschlossen ist, wird die nachfolgende Anforderung nicht verarbeitet.

2. Erhöhter Speicher

Der durch das Lesen von Big Key verbrauchte Speicher erhöht sich im Vergleich zum normalen Schlüssel. Wenn er weiter zunimmt, kann es zu OOM (Speicherüberlauf) kommen oder den maximalen Speicher-Maximemory-Einstellungswert von Redis erreichen Bewirkt eine Schreibblockierung oder die Entfernung wichtiger Schlüssel.

3. Blockiertes Netzwerk

Wenn ein großer Einzelwert gelesen wird, belegt er mehr Bandbreite der Servernetzwerkkarte, verlangsamt sich selbst und kann andere Redis-Instanzen oder Anwendungen auf dem Server beeinträchtigen.

4. Auswirkungen auf die Master-Slave-Synchronisation und den Master-Slave-Wechsel

Das Löschen eines großen Schlüssels führt dazu, dass die Hauptbibliothek für lange Zeit blockiert wird und eine Synchronisationsunterbrechung oder ein Master-Slave-Wechsel auftritt.

4. Wie erkennt man Big Key?

1. Verwenden Sie die mit redis gelieferte Befehlsidentifikation. Sie können beispielsweise den offiziellen Redis-Client redis-cli plus den Parameter --bigkeys verwenden, um die 5 Datentypen einer bestimmten Instanz (String, Hash, list, set, zset)s größter Schlüssel. Der Vorteil besteht darin, dass es online gescannt werden kann, ohne dass der Dienst blockiert wird. Der Nachteil besteht darin, dass weniger Informationen vorhanden sind und der Inhalt nicht genau genug ist.


2. Verwenden Sie den Befehl debug object key, um den Schlüssel entsprechend dem eingehenden Objekt (dem Namen des Schlüssels) zu analysieren und eine große Datenmenge zurückzugeben. Der Wert von serializedlength ist die serialisierte Länge des Schlüssels. Es ist zu beachten, dass die serialisierte Länge des Schlüssels nicht mit seiner tatsächlichen Länge im Speicherbereich übereinstimmt. Darüber hinaus ist das Debug-Objekt ein Debugging-Befehl, dessen Ausführung teuer ist und bei dessen Ausführung andere Anforderungen eingehen Redis wird blockiert, bis es ausgeführt wird. Da immer nur die Informationen eines einzelnen Schlüssels gefunden werden können, wird dies offiziell nicht empfohlen.

3. Redis-rdb-tools Open-Source-Tool

Diese Methode besteht darin, bgsave auf der Redis-Instanz auszuführen, die Snapshot-Sicherung von Redis auszulösen, die RDB-Persistenzdatei zu generieren und dann die gesicherte RDB-Datei zu analysieren. Finde den großen Schlüssel.

Der Vorteil besteht darin, dass die erhaltenen Schlüsselinformationen detailliert sind, es viele optionale Parameter gibt und benutzerdefinierte Anforderungen unterstützt werden. Die Ergebnisinformationen können im JSON- oder CSV-Format ausgewählt werden und die anschließende Verarbeitung ist bequem Operation und es dauert lange, bis die Ergebnisse vorliegen. 5. Wie löst man das Big-Key-Problem?

Um das Big-Key-Problem zu lösen, reicht es aus, die Größe des dem Schlüssel entsprechenden Werts zu reduzieren, d. h. für die String-Datenstruktur die Länge der gespeicherten Zeichenfolge für List, Hash, Set zu reduzieren. und ZSet-Datenstrukturen, wodurch die Menge der Elemente reduziert wird.

1. Teilen Sie den großen Schlüssel

Teilen Sie einen großen Schlüssel in mehrere kleine Schlüssel auf, z. B. einen Schlüsselwert, und stellen Sie sicher, dass die Anzahl oder Größe jedes Schlüssels in einem angemessenen Bereich liegt. Speichern Sie ihn dann, indem Sie verschiedene Schlüssel abrufen oder mget verwenden, um sie stapelweise abzurufen.

2. Bereinigen Sie die großen Schlüssel

Bereinigen Sie die großen Schlüssel in Redis und löschen Sie solche Daten aus Redis. Redis stellt seit 4.0 den UNLINK-Befehl zur Verfügung, mit dem eingehende Schlüssel langsam und nicht blockierend bereinigt werden können. Mit UNLINK können Sie große oder sogar besonders große Schlüssel sicher löschen.

3. Überwachen Sie den Speicher, die Netzwerkbandbreite, das Timeout und andere Indikatoren von Redis.

Durch Überwachen des Systems und Festlegen eines angemessenen Alarmschwellenwerts für den Redis-Speicher, um uns daran zu erinnern, dass zu diesem Zeitpunkt möglicherweise große Schlüssel generiert werden, z. B. Redis-Speicher Die Nutzung übersteigt 70 %, die Wachstumsrate des Redis-Speichers übersteigt 20 % innerhalb einer Stunde usw.

4. Bereinigen Sie regelmäßig ungültige Daten.

Wenn ein bestimmter Schlüssel inkrementell eine große Datenmenge schreibt, die Aktualität der Daten jedoch ignoriert wird, kommt es zu einer Anhäufung großer Mengen ungültiger Daten. Ungültige Daten können durch geplante Aufgaben bereinigt werden. 5. Wert komprimieren Wenn der Wert nach der Komprimierung immer noch sehr groß ist, können Sie über eine weitere Aufteilung des Schlüssels nachdenken.

Ergänzendes Wissen: Schlüsseldesign(1) [Empfehlung]: Lesbarkeit und Verwaltbarkeit

Stellen Sie dem Firmennamen (oder Datenbanknamen) ein Präfix voran (um Schlüsselkonflikte zu vermeiden) und trennen Sie ihn durch einen Doppelpunkt, z. B. den Firmennamen: Tabellenname: id

o2o: order:1

(2) [Vorschlag]: Einfachheit


Kontrollieren Sie die Länge des Schlüssels und stellen Sie gleichzeitig die Semantik sicher. Wenn viele Schlüssel vorhanden sind, kann die Speichernutzung nicht ignoriert werden, zum Beispiel:

user:{uid}:friends:messages:{mid} wird vereinfacht zu u:{uid}m:{mid}

(3) [Obligatorisch]: Keine Sonderzeichen einschließen


Gegenbeispiel: Leerzeichen einschließen , Zeilenumbrüche, einzelne Zeichen, doppelte Anführungszeichen und andere Escape-Zeichen

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Big-Key-Problem in Redis. 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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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 löschen Sie Redis -Daten So löschen Sie Redis -Daten Apr 10, 2025 pm 10:06 PM

So löschen Sie Redis -Daten: Verwenden Sie den Befehl Flushall, um alle Schlüsselwerte zu löschen. Verwenden Sie den Befehl flushdb, um den Schlüsselwert der aktuell ausgewählten Datenbank zu löschen. Verwenden Sie SELECT, um Datenbanken zu wechseln, und löschen Sie dann FlushDB, um mehrere Datenbanken zu löschen. Verwenden Sie den Befehl del, um einen bestimmten Schlüssel zu löschen. Verwenden Sie das Redis-Cli-Tool, um die Daten zu löschen.

So lesen Sie Redis -Warteschlange So lesen Sie Redis -Warteschlange Apr 10, 2025 pm 10:12 PM

Um eine Warteschlange aus Redis zu lesen, müssen Sie den Warteschlangenname erhalten, die Elemente mit dem Befehl LPOP lesen und die leere Warteschlange verarbeiten. Die spezifischen Schritte sind wie folgt: Holen Sie sich den Warteschlangenname: Nennen Sie ihn mit dem Präfix von "Warteschlange:" wie "Warteschlangen: My-Queue". Verwenden Sie den Befehl LPOP: Wischen Sie das Element aus dem Kopf der Warteschlange aus und geben Sie seinen Wert zurück, z. B. die LPOP-Warteschlange: my-queue. Verarbeitung leerer Warteschlangen: Wenn die Warteschlange leer ist, gibt LPOP NIL zurück, und Sie können überprüfen, ob die Warteschlange existiert, bevor Sie das Element lesen.

So verwenden Sie Redis Lock So verwenden Sie Redis Lock Apr 10, 2025 pm 08:39 PM

Um die Operationen zu sperren, muss die Sperre durch den Befehl setNX erfasst werden und dann den Befehl Ablauf verwenden, um die Ablaufzeit festzulegen. Die spezifischen Schritte sind: (1) Verwenden Sie den Befehl setNX, um zu versuchen, ein Schlüsselwertpaar festzulegen; (2) Verwenden Sie den Befehl Ablauf, um die Ablaufzeit für die Sperre festzulegen. (3) Verwenden Sie den Befehl Del, um die Sperre zu löschen, wenn die Sperre nicht mehr benötigt wird.

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.

So lösen Sie Datenverlust mit Redis So lösen Sie Datenverlust mit Redis Apr 10, 2025 pm 08:24 PM

Zu den Ursachen für Datenverluste gehören Speicherausfälle, Stromausfälle, menschliche Fehler und Hardwarefehler. Die Lösungen sind: 1. Speichern Sie Daten auf Festplatten mit RDB oder AOF Persistenz; 2. Kopieren Sie auf mehrere Server, um eine hohe Verfügbarkeit zu erhalten. 3. Ha mit Redis Sentinel oder Redis Cluster; 4. Erstellen Sie Schnappschüsse, um Daten zu sichern. 5. Implementieren Sie Best Practices wie Persistenz, Replikation, Schnappschüsse, Überwachung und Sicherheitsmaßnahmen.

So verwenden Sie die Befehlszeile der Redis So verwenden Sie die Befehlszeile der Redis Apr 10, 2025 pm 10:18 PM

Verwenden Sie das Redis-Befehlszeilen-Tool (REDIS-CLI), um Redis in folgenden Schritten zu verwalten und zu betreiben: Stellen Sie die Adresse und den Port an, um die Adresse und den Port zu stellen. Senden Sie Befehle mit dem Befehlsnamen und den Parametern an den Server. Verwenden Sie den Befehl Hilfe, um Hilfeinformationen für einen bestimmten Befehl anzuzeigen. Verwenden Sie den Befehl zum Beenden, um das Befehlszeilenwerkzeug zu beenden.

See all articles