Heim  >  Artikel  >  Backend-Entwicklung  >  Redis-Caching-Strategie

Redis-Caching-Strategie

WBOY
WBOYOriginal
2016-09-06 08:57:081234Durchsuche

Bei der Verwendung von Redis zum Zwischenspeichern von Daten lautet die Idee des Cache-Designs wie folgt:
Wenn Sie Daten abrufen, rufen Sie zuerst die Daten aus dem Cache ab. Wenn die erhaltenen Daten leer sind, fragen Sie die Datenbank ab. und dann erste Abfrage Die empfangenen Daten werden in Redis zwischengespeichert und dann werden die Daten zurückgegeben
Aber jetzt habe ich zwei Fragen an Sie:

  1. Wenn das Ergebnis der Abfrage in der Datenbank leer ist, werden die Daten nicht zwischengespeichert und können daher nicht aus dem Cache abgerufen werden. Dann wird bei jedem Abruf der Daten eine Datenbankabfrage durchgeführt. Wie soll dies optimiert werden?

  2. Wie soll mit dem Cache umgegangen werden, wenn Daten aktualisiert werden?

Ich habe einige unausgereifte Vorstellungen zu diesen beiden Themen. Ich möchte alle bitten, mir einen Rat zu geben, ob es machbar ist und ob es einen besseren Weg gibt, damit umzugehen:

Wenn bei der ersten Frage keine Daten aus der Datenbankabfrage abgerufen werden, wird ein fester Standardwert (z. B. Zeichenfolge: „nodata“) zwischengespeichert, um anzuzeigen, dass beim nächsten Abruf der Daten keine Daten vorhanden sind Im Cache wird dieser feste Wert abgerufen. Wenn der Wert angibt, dass keine Daten vorhanden sind, wird er direkt leer zurückgegeben, ohne die Datenbank erneut abzufragen

Für die zweite Frage besteht die aktuelle Idee darin, dass, wenn die aktualisierten Daten nicht besonders wichtig sind, die Daten in die Datenbank geschrieben und die entsprechenden Daten direkt im Cache aktualisiert werden können Wenn die aktualisierten Daten jedoch besonders wichtig sind (z. B. Geld), wird der entsprechende Cache direkt geleert, nachdem die Daten das nächste Mal in die Datenbank geschrieben wurden Um die neuesten Daten zu erhalten, müssen Sie die Datenbank abfragen.

Antwortinhalt:

Bei der Verwendung von Redis zum Zwischenspeichern von Daten lautet die Idee des Cache-Designs wie folgt:
Wenn Sie Daten abrufen, rufen Sie zuerst die Daten aus dem Cache ab. Wenn die erhaltenen Daten leer sind, fragen Sie die Datenbank ab. und dann erste Abfrage Die empfangenen Daten werden in Redis zwischengespeichert und dann werden die Daten zurückgegeben
Aber jetzt habe ich zwei Fragen an Sie:

  1. Wenn das Ergebnis der Abfrage in der Datenbank leer ist, werden die Daten nicht zwischengespeichert und können daher nicht aus dem Cache abgerufen werden. Dann wird bei jedem Abruf der Daten eine Datenbankabfrage durchgeführt. Wie soll dies optimiert werden?

  2. Wie soll mit dem Cache umgegangen werden, wenn Daten aktualisiert werden?

Ich habe einige unausgereifte Vorstellungen zu diesen beiden Themen. Ich möchte alle bitten, mir einen Rat zu geben, ob es machbar ist und ob es einen besseren Weg gibt, damit umzugehen:

Wenn bei der ersten Frage keine Daten aus der Datenbankabfrage abgerufen werden, wird ein fester Standardwert (z. B. Zeichenfolge: „nodata“) zwischengespeichert, um anzuzeigen, dass beim nächsten Abruf der Daten keine Daten vorhanden sind Im Cache wird dieser feste Wert abgerufen. Wenn der Wert angibt, dass keine Daten vorhanden sind, wird er direkt leer zurückgegeben, ohne die Datenbank erneut abzufragen

Für die zweite Frage besteht die aktuelle Idee darin, dass, wenn die aktualisierten Daten nicht besonders wichtig sind, die Daten in die Datenbank geschrieben und die entsprechenden Daten direkt im Cache aktualisiert werden können Wenn die aktualisierten Daten jedoch besonders wichtig sind (z. B. Geld), wird der entsprechende Cache direkt geleert, nachdem die Daten das nächste Mal in die Datenbank geschrieben wurden Um die neuesten Daten zu erhalten, müssen Sie die Datenbank abfragen.

  1. Sie benötigen eine Möglichkeit (z. B. natürlich nullbare Typen oder und-Typen), um zwischen diesen beiden Fällen zu unterscheiden. Wenn beispielsweise Daten vorhanden sind, wird darin eine JSON-Liste [{...}, {...}] gespeichert. Wenn keine Daten vorhanden sind, wird natürlich [] gespeichert. Wie auch immer, solange es keinen Konflikt gibt.

  2. Cache-Aktualisierungsroutine |. Cool Shell - CoolShell.cn

Was Sie oben gesagt haben, macht Sinn.
Sie können sich auf die Idee des Datei-Caching beziehen.
Thinkphp-Datei-Caching verwendet Serialisierung (Valle), um Daten zu speichern, und der Dateiname wird als Schlüsselname verwendet. Um den Cache zu leeren, setzen Sie direkt (null), um dies zu erreichen.
Caching dient nur der Bequemlichkeit der Abfrage und der Reduzierung der Anzahl der MySQL-Zugriffe. Das Problem der Cache-Aktualisierung muss durch Code implementiert werden.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:thinkphp-ProblemNächster Artikel:thinkphp-Problem