Comment puis-je effacer le cache dans laravel utilisant la ligne de commande?
Je suis en utilisant Redis
pour mettre en cache les requêtes/de routes dans Laravel 5.2.
J'ai 3 environnements d'exécution sur le même serveur web que j'.e "production", "mise en scène", et "développement".
Pour chaque environnement dans lequel j'ai mis un cache différent prefix
valeur pour me permettre de lier le cache à l'environnement différent.
Dans le config/cache.php
fichier que j'ai modifié la ligne
'prefix' => 'laravel',
À
'prefix' => ENV('CACHE_PREFIX', 'laravel'),
Ensuite dans mon .env
fichier, j'ai ajouté le préfixe pour chaque environnement de cette
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 effacer le cache à partir de la ligne de commande comme ceci
php artisan cache:clear
Mais le code ci-dessus va vider le cache pour l'ensemble de mes environnements.
J'ai seulement envie de vider le cache pour "LaravelDev", et le laisser seul "LaravelStaging" et "LaravelProduction"
Comment puis-je effacer le cache pour un environnement spécifique?
OriginalL'auteur Jaylen | 2016-07-07
Vous devez vous connecter pour publier un commentaire.
cache:clear
commande va supprimer tout le cache associé à la connexion à la base.Si vous souhaitez utiliser le même
Redis
serveur avec plusieurs instances, vous pouvez utiliser un autreRedis
base de données pour chaque instance.Dans le
.env
de fichiers vous pouvez ajouter le suivantPour votre Environnement de Production
Pour votre Environnement de test
Pour votre Environnement de Développement
Puis dans
config\database.php
dans leRedis
section modifier cette ligne'database' => 0,
pour
'database' => env('REDIS_DATABASE', 0),
Maintenant, vous pouvez vider le cache de vos environnements à l'aide de la commande suivante
OriginalL'auteur Mike A
Ce que le
cache:clear
artisan commande n'appelleflush
fonction sur le connecteur de courant. Comme la mise en cache des moteurs varie avec la fonctionnalité je ne pense pas qu'il est possible d'expiration des clés de manière sélective en gardant API de cache universel. Les moteurs comme Redis fournit une telle fonctionnalité, mais memcached par exemple ne pas.Si vous utilisez le Redis, vous pouvez modifier la valeur par défaut de connecteur à utiliser "SCAN /DEL' commandes pour
flush()
méthode. Ce n'est pas encore très efficace.Si votre application utilise un cache correctement rinçage, il ne devrait pas causer de problèmes que le cache se reconstruire lui-même. Vous ne devez jamais attendre de certaines données dans le cache comme il peut expirer de toute façon.
La solution est d'utiliser différents type de stockage des sessions dans votre mise en scène et les environnements de Dev, vider le cache qui n'affecte pas les utilisateurs.
Je ne peux pas créer une ligne de commande qui va exécuter le code suivant? $redis = Cache::getRedis(); $clefs = $redis->touches(Cache::getPrefix() . "*"); foreach($clefs as $key) { Cache::oublier($key); }
Bien sûr, cela devrait fonctionner aussi longtemps que vous n'avez pas des milliers de clés dans votre cache susceptible de dépasser la mémoire disponible. Parler directement à Redis vous pouvez utiliser SCAN / MATCH / commande COUNT combinaison.
OriginalL'auteur Chris Cynarski