Dieser Artikel vermittelt Ihnen relevantes Wissen über Redis. Er stellt hauptsächlich drei Arten von Cache-Problemen vor, nämlich Cache-Penetration, Cache-Aufschlüsselung und Cache-Lawine.
Empfohlenes Lernen: Redis-Lerntutorial
In unseren tatsächlichen Geschäftsszenarien wird Redis im Allgemeinen in Verbindung mit anderen Datenbanken verwendet, um den Druck zu reduzieren End-End-Datenbank, beispielsweise in Verbindung mit der relationalen Datenbank MySQL.
Redis speichert häufig abgefragte Daten in MySQL, z. B. Hot Data, sodass Benutzer bei einem Besuch keine Abfragen in MySQL durchführen müssen, sondern direkt zwischengespeicherte Daten in Redis erhalten. Dadurch wird der Lesedruck auf die Back-End-Datenbank verringert. Wenn die vom Benutzer abgefragten Daten in Redis nicht verfügbar sind, wird die Abfrageanforderung des Benutzers an die MySQL-Datenbank übertragen.
Wenn MySQL die Daten an den Client zurückgibt, werden die Daten auch in Redis zwischengespeichert. Damit der Benutzer beim Lesen wieder auf die Daten zugreifen kann, können Daten direkt von Redis abgerufen werden. Das Flussdiagramm sieht wie folgt aus:
Wenn wir Redis
als Cache-Datenbank verwenden, läuft es natürlich nicht immer reibungslos. Wir werden auf häufigedrei Caching-Probleme stoßen:Cache-PenetrationCache-Penetration
- Cache-Penetration
- Cache-Lawine
- 2. Cache-Penetration2.1 Einführung
Wenn es zu viele solcher Anfragen gibt oder wenn Benutzer solche Anfragen für böswillige Angriffe verwenden, wird die MySQL-Datenbank stark belastet und kann sogar zusammenbrechen. Dieses Phänomen wird als Cache-Penetration bezeichnet.2.2 Lösung
Leere Objekte zwischenspeichern
aus dem Cache abgerufen. Die Anfrage des Benutzers wird in der Cache-Ebene blockiert, wodurch die Back-End-Datenbank geschützt wird. Obwohl die Anforderung nicht in MSQL eingegeben werden kann, belegt diese Strategie den Redis-Cache-Speicherplatz. Bloom-Filter
Speichern Sie zunächst alle Schlüssel der Hotspot-Daten, auf die der Benutzer zugreifen kann, im Bloom-Filter (auch Cache-Vorwärmung genannt).
Das Prozessdiagramm sieht wie folgt aus: Cache-Vorwärmung: Bezieht sich auf das Laden relevanter Daten in das Redis-Cache-System im Voraus, wenn das System startet. Dadurch wird vermieden, dass Daten geladen werden, wenn der Benutzer sie anfordert. Beide Lösungen können das Problem der Cache-Penetration lösen , ihre Verwendungsszenarien sind jedoch unterschiedlich: Cache leere Objekte : Anzahl der Schlüssel, die für leere Daten geeignet sind Szenarien mit begrenzten und hohe Wahrscheinlichkeit wiederholter Schlüsselanfragen. Cache-Aufschlüsselung bedeutet, dass die vom Benutzer abgefragten Daten nicht im Cache, aber in der Backend-Datenbank vorhanden sind. Der Grund für dieses Phänomen ist Im Allgemeinen wird dies durch den Ablauf des Schlüssels im Cache verursacht. Beispielsweise erhält ein Hot-Data-Schlüssel ständig eine große Anzahl gleichzeitiger Zugriffe. Wenn der Schlüssel zu einem bestimmten Zeitpunkt plötzlich ausfällt, gelangen viele gleichzeitige Anforderungen in die Back-End-Datenbank, wodurch der Druck sofort zunimmt. Dieses Phänomen wird als Cache-Zusammenbruch bezeichnet. Hotspot-Daten so einstellen, dass sie nie ablaufen. an, um die Verwendung von Cache neu zu gestalten. Wenn Daten generiert werden, wird der Cache zuerst abgefragt. Wenn kein Cache vorhanden ist, wird er durch eine verteilte Sperre gesperrt. Der erste Prozess, der die Sperre erhält, gelangt zur Abfrage in die Back-End-Datenbank und die Abfrageergebnisse werden in Redis gepuffert. Entsperren2.3 Vergleich der Lösungen
Bloom-Filter: Geeignet für Szenarien, in denen die Schlüssel leerer Daten unterschiedlich sind und die Wahrscheinlichkeit wiederholter Schlüsselanforderungen gering ist. 3. Cache-Aufschlüsselung
3.1 Einführung
Ablaufzeit ändern
Des -verteilte Lock nimmt die Methode der Verteilung von Lock
: Wenn andere Prozesse feststellen, dass die Sperre von einem bestimmten Prozess belegt ist, wechseln sie in den Wartezustand. Nach dem Entsperren greifen andere Prozesse nacheinander auf den zwischengespeicherten Schlüssel zu. 3.3 Lösungsvergleich und die Codekomplexität wird zunehmen.
Redis-Lerntutorial
Empfohlenes Lernen:
Das obige ist der detaillierte Inhalt vonLassen Sie uns über die drei Caching-Probleme von Redis sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!