Redis
 sql >> Base de données >  >> NoSQL >> Redis

Comprendre la mise en cache de Laravel :Façade de cache et Redis

Commun :

Ils sont tous en cache .

Ils sont tous utilisés pour réduire le coût du temps .

Différents réseaux :

Configurations et itinéraires :

Il appartient à application . Nous l'appelons Cache d'application .

php artisan config:cache
php artisan route:cache

Ces deux commandes mettent en cache les routes et les configurations.

CHEMIN :

Ils sont toujours stockés dans bootstrap/cache/

Courir

php artisan config:clear
php artisan route:clear

N'effacez que les répertoires et les fichiers dans bootstrap/cache/ .

Ils sont statiques . Ils ne sont donc modifiés que lorsque vous les modifiez.

Avantage

Si vous les modifiez, vous devez clear et cache manuellement.

Après avoir mis en cache ces routes et configurations.

Laravel n'a pas besoin de relire les configurations et les routes du fichier ce qui a coûté du temps IO.

Cache du système de fichiers et cache Redis :

Le cache du système de fichiers et le cache Redis sont également des caches.

Cependant, ils utilisent un pilote différent pour stocker les données, signifie où vous stockez les données de mise en cache .

CHEMIN du système de fichiers :si vous utilisez le pilote du système de fichiers. ils sont stockés dans storage/framework/cache/

Reids PATH :stockage des données dans redis par valeur-clé.

Quand les utilisez-vous ?

Lorsque vous avez constaté qu'il y avait beaucoup de demandes à ce code pour obtenir des données. Et ces données ne sont pas modifiées si vite.

Vous pouvez utiliser le cache pour les stocker, puis, la prochaine fois qu'une autre requête sera adressée à cette API, il vous suffira de prendre les données du cache, comme ci-dessous :

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

La première requête récupère les données des messages de la base de données, puis stocke ces données dans le cache (Reids ou Filesystem) expiré après 30 secondes.

La prochaine requête récupère les données des messages uniquement via le cache. Ils n'ont plus besoin de chercher dans les bases de données.

Et celui-ci :

use Illuminate\Support\Facades\Redis; 

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

Signifie lorsque les gens demandent localhost:8000/ , le nombre de visites des utilisateurs augmente dans redis (pas besoin de stocker dans la base de données, cela coûte plus de temps), la prochaine fois, lorsque la demande de recherche de visite compte, elle peut être trouvée dans redis très rapidement.

PS :Ici, utilisez Redis Facade, puis les données sont stockées dans redis .

Si vous utilisez redis comme pilote de cache, Cache::remember() stockera également les données dans redis.

Cependant, en utilisant Redis Facade, vous pouvez utiliser de nombreuses méthodes Redis.

Quelle est la meilleure ?

Je pense que redis est meilleur que filesystem .

  1. Parce que redis stocker les données en mémoire et stocker le système de fichiers sur le disque. La lecture des données de la mémoire est plus rapide que le disque.

  2. Fonctionner les données dans Redis sont plus faciles que le système de fichiers. Par exemple, Redis prend en charge l'effacement de tout le cache pour une balise spécifique, mais le système de fichiers ne peut pas [Parce que le système de fichiers stocke les données du cache par le nom de la clé chiffrée].

  3. Pour distribué serveur, le cache du système de fichiers est une mauvaise idée. Réduction du taux d'accès au cache.

Honnêtement, d'autres pilotes peuvent être choisis, comme mongodb .

Au fait, mon anglais n'est pas très bon, j'espère que vous comprenez.