webentwicklung-frage-antwort-db.com.de

Wie kann ich den Cache in laravel über die Befehlszeile leeren?

Ich verwende Redis, um Abfragen/Routen in Laravel 5.2 zwischenzuspeichern.

Ich verwende drei Umgebungen auf demselben Webserver, nämlich "Produktion", "Staging" und "Entwicklung".

Für jede Umgebung habe ich einen anderen Cache-Wert prefix festgelegt, damit ich den Cache mit einer anderen Umgebung verknüpfen kann.

In dem config/cache.php Datei Ich habe die Zeile geändert

'prefix' => 'laravel',

Zu

'prefix' => ENV('CACHE_PREFIX', 'laravel'),

Dann in meinem .env Datei, habe ich das Präfix für jede Umgebung wie folgt hinzugefügt

Für Dev

CACHE_PREFIX="LaravelDev"

Für die Inszenierung

CACHE_PREFIX="LaravelStaging"

Für die Produktion

CACHE_PREFIX="LaravelProduction"

Ich weiß, dass ich den Cache auf diese Weise über die Befehlszeile löschen kann

php artisan cache:clear

Der obige Code löscht jedoch den Cache für alle meine Umgebungen.

Ich möchte den Cache nur für "LaravelDev" leeren und "LaravelStaging" und "LaravelProduction" in Ruhe lassen.

Wie kann ich den Cache für eine bestimmte Umgebung leeren?

12
Jaylen

Mit dem Befehl cache:clear Wird der gesamte mit der Verbindung zur Datenbank verbundene Cache gelöscht.

Wenn Sie denselben Redis Server mit mehreren Instanzen verwenden möchten, können Sie für jede Instanz eine andere Redis Datenbank verwenden.

In der Datei .env Können Sie Folgendes hinzufügen

Für Ihre Produktionsumgebung

 REDIS_DATABASE=0

Für Ihre Staging-Umgebung

 REDIS_DATABASE=1

Für Ihre Entwicklungsumgebung

 REDIS_DATABASE=2

Ändern Sie dann in config\database.php Im Abschnitt Redis diese Zeile 'database' => 0, In 'database' => env('REDIS_DATABASE', 0),

Jetzt können Sie den Cache für jede Ihrer Umgebungen mit dem folgenden Befehl löschen

php artisan cache:clear
17
Junior

Was der Handwerkerbefehl cache:clear Bewirkt, ruft die Funktion flush für den aktuellen Connector auf. Da die Caching-Engines von der Funktionalität abhängen, glaube ich nicht, dass es möglich ist, Schlüssel ablaufen zu lassen, um die Cache-API universell zu halten. Engines wie Redis bieten solche Funktionen, aber zum Beispiel memcached nicht.

Wenn Sie Redis verwenden, können Sie den Standard-Connector so ändern, dass er die 'SCAN/DEL'-Befehle für die flush() -Methode verwendet. Dies wird jedoch nicht sehr effektiv sein.

Wenn Ihre Anwendung das korrekte Leeren des Caches verwendet, sollte dies keine Probleme verursachen, da sich der Cache von selbst neu erstellt. Sie sollten niemals erwarten, dass sich einige Daten im Cache befinden, da sie ohnehin verfallen könnten.

0
Chris Cynarski