web-dev-qa-db-fra.com

Comment puis-je vider le cache dans laravel en utilisant la ligne de commande?

J'utilise Redis pour mettre en cache les requêtes/routes dans Laravel 5.2.

J'ai 3 environnements fonctionnant sur le même serveur Web, à savoir "production", "mise en scène" et "développement".

Pour chaque environnement, j'ai défini une valeur de cache prefix différente pour me permettre de lier le cache à un environnement différent.

Dans le config/cache.php fichier j'ai changé de ligne

'prefix' => 'laravel',

À

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

Puis dans mon .env fichier, j'ai ajouté le préfixe pour chaque environnement comme celui-ci

Pour Dev

CACHE_PREFIX="LaravelDev"

Pour la mise en scène

CACHE_PREFIX="LaravelStaging"

Pour la production

CACHE_PREFIX="LaravelProduction"

Je sais que je peux vider le cache de la ligne de commande comme ceci

php artisan cache:clear

Mais le code ci-dessus effacera le cache pour tous mes environnements.

Je veux seulement vider le cache pour "LaravelDev" seulement et laisser "LaravelStaging" et "LaravelProduction"

Comment puis-je vider le cache pour un environnement spécifique?

12
Jaylen

La commande cache:clear Supprimera tout le cache associé à la connexion à la base de données.

Si vous souhaitez utiliser le même serveur Redis avec plusieurs instances, vous pouvez utiliser une base de données Redis différente pour chaque instance.

Dans le fichier .env, Vous pouvez ajouter ce qui suit

Pour votre environnement de production

 REDIS_DATABASE=0

Pour votre environnement de transfert

 REDIS_DATABASE=1

Pour votre environnement de développement

 REDIS_DATABASE=2

Puis dans config\database.php Dans la section Redis changez cette ligne 'database' => 0, En 'database' => env('REDIS_DATABASE', 0),

Vous pouvez maintenant vider le cache pour n'importe lequel de vos environnements à l'aide de la commande suivante

php artisan cache:clear
17
Junior

Ce que fait la commande cache:clear Artisan appelle la fonction flush sur le connecteur actuel. Comme les moteurs de mise en cache varient en fonction des fonctionnalités, je ne pense pas qu'il soit possible d'expirer les clés de manière sélective en gardant le cache API universel. Des moteurs comme Redis offrent de telles fonctionnalités, mais pas Memcached par exemple.

Si vous utilisez Redis, vous pouvez modifier le connecteur par défaut pour utiliser les commandes 'SCAN/DEL' pour la méthode flush(). Mais cela ne sera pas très efficace.

Si votre application utilise le vidage du cache correctement, cela ne devrait pas poser de problème car le cache se reconstruira automatiquement. Vous ne devez jamais vous attendre à ce que certaines données soient dans le cache car elles pourraient de toute façon expirer.

0
Chris Cynarski