Laravel et Redis forment une combinaison puissante pour augmenter la vitesse et les performances des applications. Redis, un magasin clé-valeur en mémoire, est parfait pour la mise en cache, en particulier lorsque vous avez besoin d'un accès rapide et fréquent aux données. Dans ce guide, nous examinerons les stratégies de mise en cache efficaces dans Laravel avec Redis. Nous expliquerons comment mettre en cache les données, gérer les délais d'expiration et vider efficacement les caches.
Pourquoi utiliser la mise en cache Redis ?
Lorsque vous mettez en cache avec Redis dans Laravel, vous enregistrez essentiellement des données temporairement pour réduire le temps passé à interroger la base de données. La mise en cache accélère la récupération des données, réduit la charge du serveur et améliore l'expérience utilisateur en accélérant le chargement des pages.
Redis est idéal pour la mise en cache car il :
Explorons comment utiliser au mieux la mise en cache Redis dans Laravel.
Disons que nous avons un site de journaux. Nous devons maintenant créer une API pour obtenir des nouvelles.
Pour commencer, mettons en cache une simple réponse API, comme une liste des derniers articles d'actualité.
$data = Cache::remember('latest_news', 3600, function () { return News::latest()->get(); });
Dans cet exemple :
Cache::remember stocke les données avec une clé (latest_news) et une durée de vie (TTL) de 3600 secondes (1 heure).
Si une demande de last_news arrive à nouveau dans l'heure, Redis sert les données mises en cache sans interroger la base de données.
Pour conserver les données à jour sans surcharger Redis :
Définissez des durées de vie plus courtes pour les données fréquemment mises à jour (par exemple, 15 à 30 minutes).
Utilisez des durées de vie plus longues (par exemple, 1 à 2 heures) pour les données qui changent rarement.
Utilisez des clés de cache spécifiques et structurées qui reflètent le contenu des données. Par exemple :
$cacheKey = "news:category:category_1";
Cette clé est claire, unique et auto-descriptive, ce qui la rend facile à identifier et à gérer au sein de Redis.
Redis prend en charge les balises, qui nous permettent de gérer des données regroupées sous une balise commune. Par exemple, en marquant tous les caches liés aux actualités avec news :
Cache::tags(['news', 'category'])->remember('category_news_1', 3600, function () { return $this->news_repository->getNewsByCategory(1); });
Maintenant, si nous voulons vider tous les caches d'actualités spécifiques à une catégorie (lorsque les actualités sont mises à jour), nous pouvons utiliser :
Cache::tags(['news', 'category'])->flush();
$page = request()->input('page', 1); $limit = request()->input('limit', 10); $cacheKey = "news:page_{$page}:limit_{$limit}"; $newsData = Cache::remember($cacheKey, 3600, function () use ($page, $limit) { return News::latest()->paginate($limit, ['*'], 'page', $page); });
Par ici :
Une entrée de cache unique est créée pour chaque page et limite.
Les utilisateurs peuvent récupérer des pages rapidement sans réinterroger la base de données.
Pour les données filtrées, incluez les paramètres de filtre dans la clé :
$data = Cache::remember('latest_news', 3600, function () { return News::latest()->get(); });
Cela garantit que chaque combinaison de catégorie et de page possède sa propre entrée de cache.
Effacer ou « invalider » les caches garantit que les utilisateurs voient les données mises à jour lorsque cela est nécessaire. Voici comment l'automatiser :
Utilisez des observateurs de modèles pour les événements tels que la création, la mise à jour ou la suppression afin de vider les caches associés.
Exemple d'observateur pour l'actualité :
$cacheKey = "news:category:category_1";
Désormais, chaque fois que des actualités sont ajoutées ou mises à jour, tous les caches étiquetés d'actualités et de pagination sont vidés, gardant les données à jour.
Pour que la mise en cache fonctionne efficacement :
Clés uniques : structurez les clés avec des paramètres tels que la catégorie, la page et la limite.
Balises pour données groupées : utilisez des balises pour gérer facilement les caches de groupes de données spécifiques.
Automatisez l'invalidation : configurez des observateurs pour vider les caches obsolètes lors des modifications de données.
Définir une expiration raisonnable : choisissez les durées de vie en fonction de la fréquence à laquelle les données changent, généralement entre 15 minutes et 1 heure.
L'utilisation de Redis avec cette approche structurée permet aux API Laravel de répondre plus rapidement, améliore la gestion de la charge du serveur et garantit une stratégie de cache fiable, efficace et facile à gérer.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!