Cache-Penetration besteht darin, einen nicht vorhandenen Schlüssel auf der Client-/Browserseite anzufordern nicht in der Datenbank vorhanden und die Datenquelle ist nicht in der Datenbank vorhanden. Jedes Mal, wenn eine Anforderung für diesen Schlüssel nicht aus dem Cache abgerufen werden kann, wird die Datenquelle angefordert.
Wenn Sie eine nicht vorhandene Benutzer-ID verwenden, um auf Benutzerinformationen zuzugreifen, befindet sich diese weder in Redis noch in der Datenbank. Mehrere Anfragen können die Datenquelle überfordern.
#🎜🎜 #
wird zwischengespeichert. Wenn es fehlschlägt (der herausgenommene Wert wird als leer beurteilt), wird die Datenbank nicht sofort geladen.
Verwenden Sie zunächst einige Operationen des Cache-Tools mit einem erfolgreichen Operationsrückgabewert (z. B. SETNX von Redis), um einen Mutex-Schlüssel festzulegen
3.1 Problembeschreibung
#🎜🎜 #Die entsprechenden Daten sind vorhanden, aber die Schlüsseldaten sind abgelaufen (der Redis-Cache ist abgelaufen und der Schlüssel wird automatisch gelöscht. Zu diesem Zeitpunkt greifen viele gleichzeitige Anforderungen auf unterschiedliche Schlüssel zu, dh auf eine große Anzahl unterschiedlicher Schlüssel). Wenn zu diesem Zeitpunkt auf den Schlüssel zugegriffen wird, wird der Datenbankserver durch eine große Anzahl gleichzeitiger Anforderungen überlastet Ersteres ist ein Schlüssel.(1) Erstellen Sie eine mehrstufige Cache-Architektur:
(2) Sperre oder Warteschlange verwenden:
Zeichnen Sie auf, ob die zwischengespeicherten Daten abgelaufen sind (legen Sie den Vorschussbetrag fest). Wenn sie ablaufen, wird eine Benachrichtigung an einen anderen Thread ausgelöst, um den Cache des tatsächlichen Schlüssels im Hintergrund zu aktualisieren.
(4) Verteilen Sie die Cache-Ablaufzeit:
Für Beispielsweise können wir der ursprünglichen Ablaufzeit einen zufälligen Wert hinzufügen, z. B. 1–5 Minuten nach dem Zufallsprinzip, sodass die Wiederholungsrate jeder zwischengespeicherten Ablaufzeit verringert wird, wodurch es schwierig wird, kollektive Fehlerereignisse zu verursachen.
Das obige ist der detaillierte Inhalt vonSo lösen Sie häufig auftretende Probleme beim Caching von Daten auf Basis von Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!