Inhaltsverzeichnis
1. Vorwort
2. Ursache des Problems
Heim Datenbank Redis Was verursacht die Redis-Ausfalllawine und wie kann man sie lösen?

Was verursacht die Redis-Ausfalllawine und wie kann man sie lösen?

Jun 01, 2023 am 10:55 AM
redis

1. Vorwort

Jeder weiß, dass einer der Engpässe bei Computern die E/A ist. Um das Problem der Nichtübereinstimmung zwischen Speicher und Festplattengeschwindigkeit zu lösen, wird ein Cache generiert, um einige heiße Daten im Speicher abzulegen und jederzeit darauf zuzugreifen. Dies reduziert die Verbindungszeit der Datenbankanforderung, um ein Aufhängen der Datenbank zu vermeiden. Es ist zu beachten, dass unabhängig davon, ob es sich um einen Zusammenbruch oder um das später besprochene Eindringen und die Lawine handelt, alles unter der Voraussetzung einer hohen Parallelität erfolgt, beispielsweise wenn ein bestimmter Hotkey im Cache fehlschlägt.

Was verursacht die Redis-Ausfalllawine und wie kann man sie lösen?

2. Ursache des Problems

Es gibt zwei Hauptgründe:

  • 1. Schlüssel wurde durch Seitenaustausch entfernt.

  • Aus dem ersten Grund hat der Schlüssel in Redis eine Ablaufzeit. Wenn der Schlüssel zu einem bestimmten Zeitpunkt abläuft (wenn das Einkaufszentrum ein Ereignis durchführt, beginnt er um 0:00 Uhr), dann werden alle Abfrageanforderungen für ein bestimmtes Produkt ausgeführt nach 0:00 Uhr wird an die Datenbank weitergegeben, was zum Absturz der Datenbank führt.

  • Aus dem zweiten Grund müssen aufgrund des begrenzten Speichers ständig neue Daten zwischengespeichert und alte Daten gelöscht werden. Daher müssen bei einer bestimmten Seitenersetzungsstrategie (Abbildung gängiger Seitenersetzungsalgorithmen) Daten gelöscht werden. Wenn sich niemand für das Produkt interessiert, bevor es beworben wird, wird es definitiv eliminiert.

3. Verarbeitungsideen für den Umgang mit Ausfällen

Die normale Verarbeitungsanforderung ist wie in der Abbildung dargestellt:

Da der Schlüsselablauf unvermeidlich ist, wenn hoher Datenverkehr zu Redis kommt, entsprechend den Single-Threaded-Eigenschaften von Redis Es kann davon ausgegangen werden, dass sich die Aufgabe in der Warteschlange befindet. Wenn die Anforderung Redis erreicht und festgestellt wird, dass der Schlüssel abgelaufen ist, wird ein Vorgang ausgeführt: Setzen der Sperre.

Was verursacht die Redis-Ausfalllawine und wie kann man sie lösen?Dieser Vorgang läuft ungefähr wie folgt ab:

Die Anfrage kommt bei Redis an und es wird festgestellt, dass der Redis-Schlüssel abgelaufen ist. Überprüfen Sie, ob eine Sperre vorhanden ist. Gehen Sie zurück zur Rückseite Warteschlange und Warteschlange. Beachten Sie, dass dies setnx() und nicht set() sein sollte, da möglicherweise andere Threads die Sperre festgelegt haben an die Datenbank, um die Daten abzurufen, und geben Sie die Sperre frei, nachdem die Anforderung zurückgegeben wurde.

  • Aber es wirft eine neue Frage auf: Was passiert, wenn Sie die Sperre erhalten und den Abruf der Daten anfordern? Das heißt, die Sperre wird nicht aufgehoben und andere Prozesse warten auf die Lösung ist:

    Ja, die Sperre legt eine Ablaufzeit fest und wird nicht freigegeben. Es ist leicht zu sagen, dass die Sperre erneut auftritt Zeitüberschreitung? Das heißt, die Daten werden nicht innerhalb der festgelegten Zeit entfernt, sondern die Sperre wird aufgrund des Ablaufs häufig inkrementiert. Dies ist jedoch unzuverlässig, da bei der ersten Anforderung eine Zeitüberschreitung auftreten kann Bei nachfolgenden Anforderungen tritt ebenfalls eine Zeitüberschreitung auf. Nach mehreren Zeitüberschreitungen hintereinander ist der Wert für die Ablaufzeit der Sperre zwangsläufig extrem groß. Ja, das hat zu viele Nachteile.
  • Eine andere Idee besteht darin, einen weiteren Thread zur Überwachung zu starten. Wenn der Thread beim Abrufen von Daten nicht aufhängt, verzögern Sie die Ablaufzeit der Sperre entsprechend.

4. Penetration Was verursacht die Redis-Ausfalllawine und wie kann man sie lösen?

Der Hauptgrund für die Penetration ist, dass viele Anfragen auf Daten zugreifen, die nicht in der Datenbank vorhanden sind. Beispielsweise wurde ein Einkaufszentrum, das Bücher verkauft, aufgefordert, Teeprodukte abzufragen, weil der Redis-Cache Wird hauptsächlich zum Zwischenspeichern heißer Daten verwendet. Daten, die nicht in der Datenbank vorhanden sind, können nicht zwischengespeichert werden. Diese Art von abnormalem Datenverkehr erreicht die Datenbank direkt und gibt „keine“ Abfrageergebnisse zurück.

Um diese Art von Anfrage zu bearbeiten, besteht die Lösung darin, der Zugriffsanfrage eine Filterebene hinzuzufügen, z. B. Bloom-Filter, erweiterter Bloom-Filter und Kuckucksfilter.

Zusätzlich zu Bloom-Filtern können Sie einige Parameterprüfungen hinzufügen. Wenn Sie beispielsweise Parameter wie id = -10 anfordern, wird Redis zwangsläufig umgangen. Sie können die Benutzerauthentifizierungstests und andere Vorgänge überprüfen. Was verursacht die Redis-Ausfalllawine und wie kann man sie lösen?

5. Lawine

Avalanche ist ähnlich wie eine Panne. Der Unterschied besteht darin, dass eine Panne auftritt, wenn ein Hotspot-Schlüssel zu einem bestimmten Zeitpunkt ausfällt, während eine Lawine auftritt, wenn eine große Anzahl von Hotspot-Schlüsseln augenblicklich ausfällt Es handelt sich um eine zufällige Ablaufzeit, die sehr ungenau ist. Wenn eine Bank beispielsweise Aktivitäten durchführt, beträgt der Zinskoeffizient nach dem Nullpunkt 3 % Kann der entsprechende Schlüssel des Benutzers in einen zufälligen Ablauf geändert werden? Wenn vergangene Daten verwendet werden, spricht man von Dirty Data.

Offensichtlich nicht möglich, sparen Sie das gleiche Geld f0c; Sie sparen 3 Millionen an Zinsen bis zum Ende des Jahres, und der Nachbar hat nur 2 Millionen. Das ist kein Kampf, nur ein Scherz~

Die richtige Idee ist Überprüfen Sie zunächst, ob der Schlüssel zum richtigen Zeitpunkt abläuft. Wenn das Problem mit dem Geschlecht, aber nicht mit der Zeit zusammenhängt, kann es durch eine zufällige Ablaufzeit gelöst werden.

Wenn es zeitbezogen ist, zum Beispiel ändert die gerade erwähnte Bank einen bestimmten Koeffizienten an einem bestimmten Tag, dann muss eine starke Abhängigkeitsaufschlüsselungslösung verwendet werden. Die Strategie besteht darin, zuerst alle Schlüssel mit dem vergangenen Thread zu aktualisieren.

Was verursacht die Redis-Ausfalllawine und wie kann man sie lösen?

Während der Aktualisierung des Hotspot-Schlüssels im Hintergrund verzögert die Business-Schicht die eingehende Anfrage, z. B. indem sie einige Millisekunden oder Sekunden kurz in den Ruhezustand versetzt Stellen Sie die folgenden Update-Hotspot-Schlüssel zur Verfügung, um den Druck zu verteilen.

Das obige ist der detaillierte Inhalt vonWas verursacht die Redis-Ausfalllawine und wie kann man sie lösen?. 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)

Was tun, wenn Redis -Speicherverbrauch zu hoch ist? Was tun, wenn Redis -Speicherverbrauch zu hoch ist? Apr 10, 2025 pm 02:21 PM

Der Redis -Speicher steigt: zu großes Datenvolumen, unsachgemäße Datenstrukturauswahl, Konfigurationsprobleme (z. B. MaxMemory -Einstellungen zu klein) und Speicherlecks. Zu den Lösungen gehören: Löschen abgelaufener Daten, Verwendung der Komprimierungstechnologie, Auswahl geeigneter Strukturen, Anpassung der Konfigurationsparameter, der Überprüfung von Speicherlecks im Code und regelmäßiger Überwachung der Speicherverwendung.

Wie geht es mit Redis -Speicherfragmentierung um? Wie geht es mit Redis -Speicherfragmentierung um? Apr 10, 2025 pm 02:24 PM

Redis -Gedächtnisfragmentierung bezieht sich auf die Existenz kleiner freier Bereiche in dem zugewiesenen Gedächtnis, die nicht neu zugewiesen werden können. Zu den Bewältigungsstrategien gehören: Neustart von Redis: Der Gedächtnis vollständig löschen, aber den Service unterbrechen. Datenstrukturen optimieren: Verwenden Sie eine Struktur, die für Redis besser geeignet ist, um die Anzahl der Speicherzuweisungen und -freisetzungen zu verringern. Konfigurationsparameter anpassen: Verwenden Sie die Richtlinie, um die kürzlich verwendeten Schlüsselwertpaare zu beseitigen. Verwenden Sie den Persistenzmechanismus: Daten regelmäßig sichern und Redis neu starten, um Fragmente zu beseitigen. Überwachen Sie die Speicherverwendung: Entdecken Sie die Probleme rechtzeitig und ergreifen Sie Maßnahmen.

Redis startet mithilfe der angegebenen Konfigurationsdatei neu Redis startet mithilfe der angegebenen Konfigurationsdatei neu Apr 10, 2025 pm 02:42 PM

Starten Sie Redis neu, indem Sie die Konfigurationsdatei angeben: 1. Suchen Sie die Konfigurationsdatei (redis.conf normalerweise im Konfi -Unterverzeichnis); 2. Ändern Sie die erforderliche Konfiguration (z. B. das Ändern des Ports); 3.. Verwenden Sie den Befehl edis-server /path/to/redis.conf, um Redis über die Konfigurationsdatei neu zu starten (wobei /path/redis.conf der Pfad der geänderten Konfigurationsdatei ist); V.

Ist der Redis -Neustartdaten immer noch da Ist der Redis -Neustartdaten immer noch da Apr 10, 2025 pm 02:45 PM

Die Daten existieren immer noch nach dem Neustart von Redis. Redis speichert Daten im Speicher, und das Neustart löscht keine Speicherdaten. Redis liefert auch Persistenz, speichert Daten über RDB- oder AOF -Dateien auf der Festplatte auf der Festplatte und stellt sicher, dass Daten nach dem Neustart aus persistierenden Dateien wiederhergestellt werden können.

Welche Auswirkungen haben die Wiederherstellung des Gedächtnisses? Welche Auswirkungen haben die Wiederherstellung des Gedächtnisses? Apr 10, 2025 pm 02:15 PM

Die Wiederherstellung der Wiederherstellung nimmt zusätzlichen Speicher an, RDB erhöht vorübergehend die Speicherverwendung beim Generieren von Snapshots, und AOF nimmt beim Anhängen von Protokollen weiterhin Speicher auf. Einflussfaktoren umfassen Datenvolumen, Persistenzrichtlinien und Redis -Konfiguration. Um die Auswirkungen zu mildern, können Sie RDB -Snapshot -Richtlinien vernünftigerweise konfigurieren, die AOF -Konfiguration optimieren, die Hardware verbessern und Speicherverbrauch überwachen. Darüber hinaus ist es wichtig, ein Gleichgewicht zwischen Leistung und Datensicherheit zu finden.

Wie setzen Sie die Redis -Speichergröße nach geschäftlichen Anforderungen fest? Wie setzen Sie die Redis -Speichergröße nach geschäftlichen Anforderungen fest? Apr 10, 2025 pm 02:18 PM

Die Einstellung der Redis -Speichergröße muss die folgenden Faktoren berücksichtigen: Datenvolumen und Wachstumstrend: Schätzen Sie die Größe und Wachstumsrate gespeicherter Daten. Datentyp: Verschiedene Typen (z. B. Listen, Hashes) belegen einen anderen Speicher. Caching -Richtlinie: Vollständige Cache, teilweise Cache und Phasen -Richtlinien beeinflussen die Speicherverwendung. Business Peak: Verlassen Sie genug Speicher, um mit Verkehrsspitzen umzugehen.

Wo ist der Redis -Neustart -Service? Wo ist der Redis -Neustart -Service? Apr 10, 2025 pm 02:36 PM

So starten Sie den Redis-Dienst in verschiedenen Betriebssystemen neu: Linux/macOS: Verwenden Sie den SystemCTL-Befehl (SystemCTL Neustart REDIS-Server) oder den Servicebefehl (Service Redis-Server-Neustart). Windows: Verwenden Sie das Tool von Services.msc (Geben Sie "Services.msc" im Dialogfeld Ausführen und drücken Sie die Eingabetaste) und klicken Sie mit der rechten Maustaste auf den Dienst "Redis" und wählen Sie "Neustart".

Was ist Redis Neustartbefehl Was ist Redis Neustartbefehl Apr 10, 2025 pm 02:39 PM

Der Befehl rEDIS-Neustart ist Redis-Server. Dieser Befehl wird verwendet, um Konfigurationsdateien zu laden, Datenstrukturen zu erstellen, REDIS -Server zu starten und auf Client -Verbindungen zu hören. Benutzer können den Befehl "Redis-Server [Optionen]" im Terminal ausführen, um den Redis-Server neu zu starten. Zu den gemeinsamen Optionen gehören der Hintergrundvorgang, das Angeben von Konfigurationsdateipfad, das Angeben von Höranschluss und das Nachladen von Snapshots nur dann, wenn Daten verloren gehen. Beachten Sie, dass das Neustart des Servers alle Client -Verbindungen trennen und vor dem Neustart die erforderlichen Daten speichern.

See all articles