Cache (Kettenoperation 15)
Cache kann für Auswahl-, Such-, Wert- und Spaltenmethoden sowie deren abgeleitete Methoden verwendet werden. Nach Verwendung der Cache-Methode wird der Datenbankabfragevorgang innerhalb des Cache-Gültigkeitszeitraums nicht erneut ausgeführt , aber der Cache wird direkt abgerufen. Informationen zu den Daten im Datencache finden Sie im Abschnitt „Cache“.
Das Folgende ist ein Beispiel. Wir verwenden die Cache-Methode für die Suchmethode wie folgt:
Db::table('user')->where('id',5)->cache(true)->find();
Das erste Abfrageergebnis wird zwischengespeichert und die zweite Abfrage für dieselben Daten Der Inhalt wird direkt im Cache zurückgegeben, ohne dass die Datenbank erneut abgefragt werden muss.
Standardmäßig wird die Cache-Gültigkeitsdauer durch die Standard-Cache-Konfigurationsparameter bestimmt, die Cache-Methode kann jedoch separat angegeben werden. Beispiel:
Db::table('user')->cache(true,60)->find(); // 或者使用下面的方式 是等效的 Db::table('user')->cache(60)->find();
bedeutet die Cache-Gültigkeitsdauer der Abfrage Das Ergebnis beträgt 60 Sekunden. Die
Cache-Methode kann die Cache-ID angeben:
Db::table('user')->cache('key',60)->find();
Die Angabe der Abfrage-Cache-ID kann den Abfrage-Cache effizienter machen.
Auf diese Weise können die Abfrage-Cache-Daten direkt extern über die thinkCache-Klasse abgerufen werden, zum Beispiel:
$result = Db::table('user')->cache('key',60)->find(); $data = \think\facade\Cache::get('key');
Die Cache-Methode unterstützt das Festlegen von Cache-Tags, zum Beispiel:
Db::table('user')->cache('key',60,'tagName')->find();
Automatische Cache-Aktualisierung
Die automatische Cache-Aktualisierung bedeutet hier, dass der Cache automatisch bereinigt wird, sobald die Daten aktualisiert oder gelöscht werden (er wird automatisch neu erstellt). -wird beim nächsten Abruf zwischengespeichert) ).
Wenn Sie Daten löschen oder aktualisieren, können Sie die Cache-Methode desselben Schlüssels aufrufen, die den Cache automatisch aktualisiert (löscht), zum Beispiel:
Db::table('user')->cache('user_data')->select([1,3,5]); Db::table('user')->cache('user_data')->update(['id'=>1,'name'=>'thinkphp']); Db::table('user')->cache('user_data')->select([1,3,5]);
Die zuletzt abgefragten Daten werden nicht aktualisiert von der ersten betroffen sein Stellen Sie für die Auswirkung des Abfrage-Cachings sicher, dass Abfragen und Aktualisierungen oder Löschungen dieselbe Cache-ID verwenden, um den Cache automatisch zu leeren.
Wenn Sie den Primärschlüssel zum Abfragen und Aktualisieren (oder Löschen) verwenden, wird der Cache automatisch aktualisiert, ohne dass die Cache-ID angegeben werden muss
Db::table('user')->cache(true)->find(1); Db::table('user')->cache(true)->where('id', 1)->update(['name'=>'thinkphp']); Db::table('user')->cache(true)->find(1);