Konsistenz zwischen zwischengespeicherten Daten und persistenten Daten, dieses Problem ist zusammengefasst (ich habe einen guten Blog-Beitrag gesehen), es handelt sich tatsächlich um Lesen und Schreiben, und es gibt auch die Frage, wer zuerst kommt und wer kommt zuletzt .
Theoretisch ist das Festlegen einer Ablaufzeit für den Cache eine Lösung, um letztendlich Konsistenz sicherzustellen. Bei dieser Lösung können wir die Ablaufzeit für die im Cache gespeicherten Daten festlegen. Alle Schreibvorgänge unterliegen der Datenbank und wir müssen nur für Cache-Vorgänge unser Bestes geben. (Empfohlenes Lernen: Redis-Video-Tutorial)
Das heißt, wenn das Schreiben in die Datenbank erfolgreich ist und die Cache-Aktualisierung fehlschlägt, lesen nachfolgende Leseanforderungen natürlich neue Werte aus der Datenbank und füllen den Cache auf, solange die Ablaufzeit erreicht ist .
Redis ist eine leistungsstarke Schlüsselwertdatenbank. Das Aufkommen von Redis hat die Mängel der Schlüsselwertspeicherung wie Memcached weitgehend ausgeglichen und kann in manchen Situationen eine sehr gute Ergänzung zu relationalen Datenbanken spielen. Es bietet Python-, Ruby-, Erlang- und PHP-Clients, die sehr benutzerfreundlich sind.
Gemäß unserer allgemeinen Verwendung von Redis sollte das Szenario wie folgt aussehen:
Mit anderen Worten: Wir werden zu gehen Redis stellt zunächst fest, ob die Daten vorhanden sind. Geben Sie die zwischengespeicherten Daten direkt zurück. Wenn es nicht vorhanden ist, wird es zur Datenbank gehen, die Daten lesen und die Daten in Redis zwischenspeichern.
Anwendbare Anlässe: Wenn die Datenmenge relativ groß ist, aber nicht häufig aktualisiert wird (z. B. Benutzerrankings)
Die Verwendung des zweiten Redis-Typs wird mit abgeschlossen Die erste Situation ist anders, bitte sehen Sie sich die spezifische Situation an:
Hier gehen wir zunächst zu Redis, um festzustellen, ob die Daten vorhanden sind, und aktualisieren sie, falls vorhanden, direkt Die entsprechenden Daten (dieser Schritt) Der entsprechende aktualisierte Schlüssel wird aufgezeichnet und beispielsweise auch in Redis gespeichert. Beispiel: Der Schlüssel lautet: save_update_keys [mit lpush-Liste aufgezeichnet]) und die aktualisierten Daten werden an zurückgegeben Seite. Wenn es nicht vorhanden ist, wird zuerst der Inhalt der Datenbank aktualisiert und dann wird eine Kopie der Daten in Redis gespeichert.
NO10 Schritt: Spätere Arbeit: Im Hintergrund werden relevante Mechanismen vorhanden sein, um die in save_update_keys in Redis gespeicherten Schlüssel zu lesen, die entsprechenden Daten zu finden und sie in der Datenbank zu aktualisieren.
Vorteile: Der Hauptzweck dieses Prozesses besteht darin, Redis als Datenbank zu verwenden, und das Aktualisieren und Abrufen von Daten ist schneller als bei DB. Es eignet sich sehr gut für häufige Änderungen in großen Datenmengen (wie Weibo).
Nachteile: Es ist stark auf Redis angewiesen, daher ist es notwendig, Daten während Ausfallzeiten zu speichern. (Sie können jedoch die Snapshot-AOF von Redis verwenden. Wenn Sie sich schnell erholen, sollte dies keine großen Auswirkungen haben, denn selbst wenn Redis nicht mehr funktioniert, hat dies keine Auswirkungen auf die nachfolgende Datenverarbeitung.)
Schwierigkeit: Planung der Eingabe Format und Speichertyp im Frühstadium sind wichtig, da sie Einfluss darauf haben, ob die Daten mit der Datenbank synchronisiert werden können.
Das obige ist der detaillierte Inhalt vonSo synchronisieren Sie den Redis-Cache mit der Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!