Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Laravel-Caching verstehen:Cache-Fassade und Redis

Häufig:

Sie sind alle Cache .

Sie werden alle verwendet, um Zeitkosten zu reduzieren .

Unterschied:

Konfigurationen und Routen:

Es gehört zur Anwendung . Wir nennen es Anwendungscache .

php artisan config:cache
php artisan route:cache

Diese beiden Befehle speichern Routen und Konfigurationen.

PFAD:

Sie werden immer in bootstrap/cache/ gespeichert

Laufen

php artisan config:clear
php artisan route:clear

Löschen Sie nur die Verzeichnisse und Dateien in bootstrap/cache/ .

Sie sind statisch . Sie werden also nur geändert, wenn Sie sie ändern.

Vorteil

Wenn Sie sie ändern, müssen Sie sie clear und cache sie manuell.

Nachdem Sie diese Routen und Konfigurationen gespeichert haben.

Laravel muss die Konfigurationen und Routen nicht erneut aus der Datei lesen was IO Zeit gekostet hat.

Dateisystem-Cache und Redis-Cache:

Dateisystem-Cache und Redis-Cache sind beide ebenfalls Cache.

Sie verwenden jedoch andere Treiber um die Daten zu speichern, bedeutet wo Sie die Caching-Daten speichern .

Dateisystempfad:Wenn Sie einen Dateisystemtreiber verwenden. sie werden in storage/framework/cache/ gespeichert

Reids PATH:Datenspeicher in redis nach Schlüsselwert.

Wann verwenden Sie sie?

Wenn Sie festgestellt haben, dass es viele Anfragen zu diesem Code gibt, um Daten zu erhalten. Und diese Daten werden nicht so schnell geändert.

Sie können den Cache verwenden, um sie zu speichern, und dann, wenn Sie das nächste Mal eine weitere Anfrage an diese API stellen, nehmen Sie einfach Daten aus dem Cache, wie unten:

$posts = Cache::remember('index.posts', 30, function()
{return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});

Die erste Anfrage holt die Daten der Beiträge aus der Datenbank und speichert diese Daten dann im Cache (Reids oder Dateisystem), der nach 30 Sekunden abgelaufen ist.

Bei der nächsten Anfrage werden die Daten der Beiträge nur über den Cache abgerufen. Sie müssen nicht erneut in Datenbanken suchen.

Und dieses hier:

use Illuminate\Support\Facades\Redis; 

Route::get('/', function () { 
     $visits = Redis::incr('visits'); 
     return $visits; 
});

Bedeutet, wenn Leute localhost:8000/ anfordern , die Besucherzahlen der Benutzer steigen in redis (müssen nicht in der Datenbank gespeichert werden, es kostet mehr Zeit), wenn Sie das nächste Mal nach der Anzahl der Besuche suchen, kann es in redis gefunden werden sehr schnell.

PS:Hier Redis Facade verwenden, dann werden die Daten in redis gespeichert .

Wenn Sie Redis als Cache-Treiber verwenden, Cache::remember() speichert Daten auch in Redis.

Mit Redis Facade können Sie jedoch viele Redis-Methoden verwenden.

Was ist besser?

Ich denke redis ist besser als filesystem .

  1. Weil redis Speichern Sie Daten im Arbeitsspeicher und das Dateisystem auf der Festplatte. Das Lesen von Daten aus dem Arbeitsspeicher ist schneller als Festplatte.

  2. Betrieb Daten in Redis ist einfacher als Dateisystem. Zum Beispiel unterstützt Redis das Löschen des gesamten Cache für ein bestimmtes Tag, aber das Dateisystem kann dies nicht [Weil das Dateisystem Cache-Daten nach dem Namen des verschlüsselten Schlüssels speichert].

  3. Für verteilt Server, Dateisystem-Cache ist eine schlechte Idee. Niedrigere Cache-Trefferquote.

Ehrlich gesagt, es gibt andere Treiber, die ausgewählt werden können, wie mongodb .

Übrigens ist mein Englisch nicht sehr gut, ich hoffe du verstehst es.