Verteiltes Caching ist eine Technologie, die häufig auf Website-Servern verwendet wird. In Geschäftsszenarien mit mehr Lesevorgängen und weniger Schreibvorgängen kann die Verwendung von Cache eine hohe Anzahl gleichzeitiger Besuche von Datenquellen wie Back-Ups effektiv unterstützen. Enddatenbanken sind gut geschützt. Es gibt mittlerweile viele verteilte Caches auf dem Markt, wie Redis, Memcached und Alibabas Tair. Unabhängig davon, welches Cache-Produkt wir verwenden, werden wir grundsätzlich auf Cache-Ausfälle, Cache-Ungültigmachung und Hotkey-Probleme stoßen. Wie wir diese Probleme wirksam verhindern können, ist ebenfalls ein schwieriges Problem, das wir lösen müssen, während wir gleichzeitig die Vorteile genießen, die das Caching mit sich bringt.
Wenn wir den Cache verwenden, prüfen wir normalerweise zuerst, ob er im Cache vorhanden ist. Wenn er vorhanden ist, geben wir den Cache-Inhalt direkt zurück. Wenn er nicht vorhanden ist, fragen wir ihn direkt ab Fragen Sie die Ergebnisse ab und geben Sie sie zurück, wie in der Abbildung unten gezeigt:
Fragen Sie Daten ab, die nicht in der Datenbank vorhanden sind, z. B. Produktdetails, und fragen Sie Daten ab, die nicht vorhanden sind. Wenn jemand sie böswillig zerstört, wird die Datenbank wahrscheinlich direkt übermäßig belastet.
Wenn beim Abfragen von Daten über einen bestimmten Schlüssel die entsprechenden Daten in der Datenbank nicht vorhanden sind, setzen wir den diesem Schlüssel entsprechenden Wert auf einen Standardwert, z. B. „NULL“. ", und legen Sie eine Cache-Ablaufzeit fest. Zu diesem Zeitpunkt wird der gesamte Zugriff über diesen Schlüssel vom Cache blockiert, bevor der Cache abläuft. Wenn die diesem Schlüssel entsprechenden Daten später in der Datenbank vorhanden sind, nachdem der Cache ungültig gemacht wurde, können Sie den neuen Wert erhalten, indem Sie über diesen Schlüssel erneut auf die Daten zugreifen.
Wenn in einer Umgebung mit hoher Parallelität der dem Schlüssel entsprechende Cache zu diesem Zeitpunkt ausfällt, wird er von mehreren Prozessen gleichzeitig abgefragt .DB und richten Sie dann gleichzeitig den Cache ein. Wenn es sich zu diesem Zeitpunkt um einen Hotspot-Schlüssel im System handelt oder eine große Anzahl davon gleichzeitig ausfällt, erhöht sich das DB-Zugriffsvolumen sofort, was zu übermäßigem Druck führt.
Staffeln Sie die Cache-Ablaufzeiten der Schlüssel im System gleichmäßig, um Cache-Ausfälle aufgrund einer großen Anzahl von Schlüsseln gleichzeitig zu verhindern.
Entwerfen Sie die Art und Weise, wie der Cache verwendet wird, neu Wir übergeben Wenn der Schlüssel zum Abfragen von Daten verwendet wird, wird zunächst der Cache abgefragt. Wenn der Cache zu diesem Zeitpunkt nicht abgefragt werden kann, wird die Sperre durch die verteilte Sperre gesperrt. Der Prozess, der die Sperre erhält, überprüft die Datenbank und legt den Cache fest. und entsperrt es dann; wenn andere Prozesse feststellen, dass eine Sperre vorliegt, warten sie auf die Entsperrung, um die zwischengespeicherten Daten zurückzugeben oder die Datenbank erneut abzufragen.
Die Werte, die bestimmten Schlüsseln im Cache entsprechen (vielleicht für die Anwendung und ein Werbeprodukt), werden auf einem Computer im gespeichert Cluster, sodass der gesamte Datenverkehr zur gleichen Maschine fließt und zum Flaschenhals des Systems wird. Die Herausforderung bei diesem Problem besteht darin, dass es nicht durch Erhöhen der Maschinenkapazität gelöst werden kann.
Client-Hotspot-Schlüssel-Cache: Zwischenspeichern Sie den Hotspot-Schlüssel, der dem Wert entspricht, lokal auf dem Client und legen Sie eine Ablaufzeit fest. Bei jeder Leseanforderung wird zunächst geprüft, ob der Schlüssel im lokalen Cache vorhanden ist. Wenn er vorhanden ist, wird er direkt zurückgegeben. Wenn er nicht vorhanden ist, wird auf die verteilte Cache-Maschine zugegriffen.
Verteilen Sie den Hotspot-Schlüssel in mehrere Unterschlüssel und speichern Sie sie dann auf verschiedenen Computern im Cache-Cluster. Die diesen Unterschlüsseln entsprechenden Werte sind dieselben wie der Hotspot-Schlüssel. Beim Abfragen von Daten über Hotspot-Schlüssel wird ein Unterschlüssel durch einen Hash-Algorithmus zufällig ausgewählt und dann auf die Cache-Maschine zugegriffen, um die Hotspots auf mehrere Unterschlüssel zu verteilen.
Weitere technische Artikel zu Redis finden Sie im Redis-Tutorial Kolumne zum Lernen!
Das obige ist der detaillierte Inhalt vonWas tun, wenn der Redis-Cache ausfällt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!