Heim > Datenbank > Redis > Hauptteil

So lösen Sie die Redis-Cache-Penetration

步履不停
Freigeben: 2019-07-25 11:25:52
Original
10493 Leute haben es durchsucht

So lösen Sie die Redis-Cache-Penetration

Caching-Technologie kann verwendet werden, um den Druck auf die Datenbank zu verringern und die Zugriffseffizienz zu verbessern. Derzeit wird dem Caching in Unternehmensprojekten immer mehr Aufmerksamkeit geschenkt. Aber Caching bedeutet nicht, einfach nur nebenbei Projekte hinzuzufügen. Der erste Schritt besteht darin, Caching in das Projekt zu integrieren. Das durch den Cache verursachte Penetrationsproblem und das daraus resultierende Schneeabprallproblem sind alles Probleme, die wir dringend lösen müssen. In diesem Artikel stellen wir Ihnen als Referenz die Lösungen vor, die ich in meinen täglichen Projekten verwende.

1. Das Prinzip der Cache-Penetration

Die normale Verwendung des Caches ist wie in der Abbildung dargestellt:

So lösen Sie die Redis-Cache-Penetration

Wie in der Abbildung dargestellt Abbildung, der Cache-Nutzungsprozess:

1. Holen Sie sich zuerst die Daten aus dem Cache, wenn sie abgerufen werden können, und geben Sie die Daten direkt an den Benutzer zurück. Dadurch entfällt die Notwendigkeit, auf die Datenbank zuzugreifen, und der Druck auf die Datenbank wird verringert.

2. Wenn sich keine Daten im Cache befinden, wird auf die Datenbank zugegriffen.

Hier wird es einen FEHLER geben, wie im Bild gezeigt:

So lösen Sie die Redis-Cache-Penetration

Wie im Bild gezeigt, ist der Cache wie eine Firewall für die Datenbank. Dadurch werden häufiger Daten angefordert. Legen Sie sie in den Cache, um den Druck auf die Datenbank zu verringern. Aber wenn jemand böswillig angreift, kann er leicht in Ihren Cache eindringen und die Datenbank stark unter Druck setzen. Im Bild oben sind die Schlüssel in Ihrem Cache beispielsweise alle positive Ganzzahlen, aber ich verwende negative Zahlen als Schlüssel, um auf Ihren Cache zuzugreifen. Dies führt dazu, dass in den Cache eingedrungen wird und direkt Druck auf die Datenbank ausgeübt wird.

2. Ursachen der Cache-Penetration

Das Problem der Cache-Penetration muss durch große Parallelität verursacht werden. Basierend auf dieser Prämisse analysieren wir die Gründe für das Eindringen in den Cache wie folgt:

1. Böswilliger Angriff, erraten Sie Ihre Schlüsselbenennungsmethode und schätzen Sie dann, dass Sie für den Zugriff einen Schlüssel verwenden, der sich nicht in Ihrem Cache befindet.

Der erste Datenzugriff. Zu diesem Zeitpunkt befinden sich keine Daten im Cache. In einem gleichzeitigen Szenario werden alle Anforderungen an die Datenbank gesendet.

3. Die Daten in der Datenbank sind ebenfalls leer. Selbst wenn auf die Datenbank zugegriffen wird, können die Daten nicht abgerufen werden. Daher dürfen keine entsprechenden Daten im Cache vorhanden sein. Dies kann auch zu einer Penetration führen.

3. Cache-Penetration lösen

Cache-Penetration besteht darin, die Gründe für die Penetration Schritt für Schritt zu vermeiden, wie im Bild gezeigt:

So lösen Sie die Redis-Cache-Penetration

Wie oben gezeigt Wie gezeigt sind die Lösungsschritte wie folgt:

  • 1. Wenn der Webserver startet, schreiben Sie im Voraus Daten, auf die häufig gleichzeitig zugegriffen werden kann, in den Cache. – Dadurch wird vermieden, dass in Schritt 3 eine große Anzahl von Anfragen in die Warteschlange gestellt und blockiert wird.

  • 2. Standardisieren Sie die Benennung von Schlüsseln und vereinheitlichen Sie die Cache-Abfrage und Schreibeinträge. Auf diese Weise wird am Eingang die Angabe des Schlüssels erkannt. – Auf diese Weise werden schädliche Schlüssel gespeichert und abgefangen.

  • 3. Synchronisierter Doppelerkennungsmechanismus Zu diesem Zeitpunkt müssen wir den synchronisierten (synchronisierten) Mechanismus verwenden, um zu überprüfen, ob der entsprechende Schlüssel im Cache vorhanden ist, bevor wir den Codeblock synchronisieren Anschließend wird der Codeblock synchronisiert. Überprüfen Sie erneut, ob der Cache den abzufragenden Schlüssel enthält. Der Zweck dieser „doppelten Erkennung“ besteht darin, bedeutungslose Datenbankzugriffe zu vermeiden, die durch gleichzeitige Szenarien verursacht werden (es ist auch eine Lösung, um das Eindringen strikt zu vermeiden).

    Dieser Schritt führt zu einer Warteschlange, aber wie wir im ersten Schritt gesagt haben, kann eine vorhersehbar große Anzahl von Anforderungen im Voraus in den Cache geschrieben werden, um eine große Anzahl von Warteschlangen zu vermeiden.

  • 4. Unabhängig davon, ob Daten in der Datenbank vorhanden sind, wird der entsprechende Schlüssel im Cache gespeichert und der Wert ist leer. – Dadurch soll ein gewöhnlicher Cache-durchdringender Zugriff auf die Datenbank aufgrund des Fehlens dieser Daten in der Datenbank vermieden werden.

  • 5. Wenn in Schritt 4 zu viele Nullwerte vorhanden sind, führt dies ebenfalls zu einer Speichererschöpfung. Verursacht unnötigen Speicherverbrauch. Auf diese Weise müssen die Schlüssel mit leeren Werten regelmäßig gereinigt werden. Verhindern Sie, dass der Speicher böswillig belegt wird. Daher können normale Funktionen keine Daten zwischenspeichern.

Weitere technische Artikel zu Redis finden Sie in der Spalte Redis-Tutorial lernen !

Das obige ist der detaillierte Inhalt vonSo lösen Sie die Redis-Cache-Penetration. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!