Heim  >  Artikel  >  Datenbank  >  Was ist das Konzept der Redis-Cache-Penetration und Cache-Lawine?

Was ist das Konzept der Redis-Cache-Penetration und Cache-Lawine?

王林
王林nach vorne
2023-05-27 16:35:20691Durchsuche

1. Cache-Penetration

1. Das Konzept der Cache-Penetration ist sehr einfach. Der Benutzer möchte Daten abfragen und stellt fest, dass die Redis-Speicherdatenbank diese nicht hat hit, also fragt es die Datenbank der Persistenzschicht ab. Es wurde festgestellt, dass keine vorhanden waren, sodass diese Abfrage fehlschlug. Wenn viele Benutzer vorhanden sind, wird der Cache nicht erreicht, sodass alle Benutzer die Datenbank der Persistenzschicht anfordern. Wenn eine Cache-Penetration auftritt, wird die Datenbank der Persistenzschicht stark belastet.

Sie müssen auf den Unterschied zwischen Cache-Aufschlüsselung und Cache-Aufschlüsselung achten. Der Cache-Ausfall bezieht sich auf einen Schlüssel, der ständig mit großer Parallelität verbunden ist, und konzentriert sich auf den Zugriff auf diesen Punkt Die kontinuierliche große Parallelität durchbricht den Cache und fordert direkt die Datenbank an, was dem Schneiden eines Lochs in eine Barriere gleicht.

Es gibt tatsächlich viele Lösungen, um das Eindringen in den Cache zu verhindern. Einige werden im Folgenden vorgestellt.

2. Lösung

(1) Bloom-Filter

Laut Statistik erreicht die Gesamtzahl der Junk-Websites und normalen Websites auf der Welt eine Art Filter, der auf A angewendet werden kann Datenstruktur dieser Größe. Durch die Verwendung von Bloom-Filtern entfällt die Notwendigkeit, dass die Internetpolizei Spam-Websites in der Datenbank einzeln vergleicht. Angenommen, wir speichern 100 Millionen Spam-Website-Adressen.

Sie können zunächst 100 Millionen Binärbits haben, und dann verwendet die Netzwerkpolizei acht verschiedene Zufallszahlengeneratoren (F1, F2, …, F8), um acht Informationsfingerabdrücke (f1, f2, …, f8) zu generieren. Als nächstes wird ein Zufallszahlengenerator G verwendet, um diese acht Informationsfingerabdrücke auf acht natürliche Zahlen g1, g2, …, g8 von 1 bis 100 Millionen abzubilden. Setzen Sie abschließend alle Binärwerte dieser acht Positionen auf eins. Der Ablauf läuft wie folgt ab:

Was ist das Konzept der Redis-Cache-Penetration und Cache-Lawine?

Eines Tages fand die Internetpolizei eine verdächtige Website und wollte feststellen, ob es sich um eine XX-Website handelte. Zunächst wurde die verdächtige Website auf 8 Punkte auf einem 100-Millionen-Bit-Array gehasht . Wenn es einen Punkt gibt, der nicht 1 ist, können Sie sicher sein, dass das Element nicht in der Menge enthalten ist.
Wie löst dieser Bloom-Filter die Cache-Penetration in Redis? Es ist ganz einfach: Zunächst werden alle möglichen Abfrageparameter in Hash-Form gespeichert. Wenn der Benutzer eine Abfrage durchführen möchte, stellt er fest, dass sie nicht in der Sammlung enthalten sind, und verwirft sie dann direkt, ohne die Persistenzebene abzufragen .

Dieses Formular ist sehr einfach.

2. Leere Objekte zwischenspeichern

Wenn die Speicherschicht ausfällt, wird auch das zurückgegebene leere Objekt zwischengespeichert und eine Ablaufzeit festgelegt. Wenn Sie später auf die Daten zugreifen, werden diese aus dem Cache abgerufen ist geschützt Backend-Datenquelle

Bei dieser Methode gibt es jedoch zwei Probleme:


Da Nullwerte viele Schlüsselpositionen im Cache belegen können, benötigt der Cache mehr Platz zum Speichern weiterer Schlüssel. Wertepaar
  1. Auch wenn die Ablaufzeit auf den Nullwert eingestellt ist, kommt es immer noch zu einer Zeitspanne der Fensterinkonsistenz zwischen den Daten in der Cache-Schicht und der Speicherschicht, was sich auf Unternehmen auswirkt, die gewartet werden müssen Konsistenz.
  2. 2. Cache-Lawine
1. Konzept

Cache-Lawine bedeutet, dass ein Fehler in der Cache-Schicht vorliegt und diese nicht richtig funktionieren kann. Infolgedessen werden alle Anfragen an die Speicherschicht gesendet, was zu einem dramatischen Anstieg des Anrufvolumens an die Speicherschicht und möglicherweise zu einem Absturz führt. 2. Lösung

(1) Redis mit hoher Verfügbarkeit Andere Dinge können weiterhin funktionieren, was eigentlich der Cluster ist, der erstellt wurde.

(2) Strombegrenzungs-Downgrade
Die Idee dieser Lösung besteht darin, Sperr- oder Warteschlangenmethoden zu verwenden, um die Anzahl der Threads zu steuern, die die Datenbank lesen und in den Cache schreiben, nachdem der Cache abgelaufen ist. Beispielsweise darf nur ein Thread Daten abfragen und den Cache schreiben, um einen bestimmten Schlüssel zu bedienen, und die verbleibenden Threads müssen warten.

(3) Datenaufwärmphase

Die Bedeutung der Datenaufwärmphase besteht darin, dass ich vor der formellen Bereitstellung zunächst auf die möglichen Daten im Voraus zugreife, sodass einige Daten, auf die möglicherweise in großen Mengen zugegriffen wird, geladen werden der Cache. Lösen Sie das Laden des Caches verschiedener Schlüssel manuell aus und legen Sie unterschiedliche Ablaufzeiten fest, um die Cache-Ungültigmachungszeit auszugleichen und zu verhindern, dass eine große Anzahl von Zugriffen gleichzeitig erfolgt.

Das obige ist der detaillierte Inhalt vonWas ist das Konzept der Redis-Cache-Penetration und Cache-Lawine?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen