La mise en cache distribuée est une technologie souvent utilisée sur les serveurs de sites Web. Dans des scénarios commerciaux avec plus de lectures et moins d'écritures, l'utilisation du cache peut prendre en charge efficacement des visites simultanées élevées telles que les back-. les bases de données finales sont bien protégées. Il existe actuellement de nombreux caches distribués sur le marché, tels que Redis, Memcached et Tair d'Alibaba. Quel que soit le produit de cache que nous utilisons, nous rencontrerons essentiellement des problèmes de panne de cache, d'invalidation du cache et de raccourci clavier. Comment prévenir efficacement ces problèmes est également un problème difficile que nous devons résoudre tout en profitant des dividendes apportés par la mise en cache.
Habituellement, lorsque nous utilisons le cache, nous vérifions d'abord s'il existe dans le cache. S'il existe, nous renverrons directement le contenu du cache. S'il n'existe pas, nous interrogerons directement la base de données puis mettrons en cache le contenu. interrogez les résultats et renvoyez-les. Par exemple, comme le montre la figure ci-dessous,
. Interroger des données qui n'existent pas dans la base de données, telles que les détails du produit, interroger des données qui n'existent pas, l'ID accédera à la base de données à chaque fois. Si quelqu'un la détruit de manière malveillante, cela entraînera probablement directement une pression excessive sur la base de données.
Lors de l'interrogation de données via une certaine clé, si les données correspondantes dans la base de données n'existent pas, nous définissons la valeur correspondant à cette clé à une valeur par défaut, telle que "NULL ", et définissez un délai d'expiration du cache. À ce stade, tous les accès via cette clé seront bloqués par le cache avant l'expiration du cache. Si les données correspondant à cette clé existent ultérieurement dans la base de données, une fois le cache invalidé, vous pouvez obtenir la nouvelle valeur en accédant à nouveau aux données via cette clé.
Dans un environnement à haute concurrence, si le cache correspondant à la clé échoue à ce moment, plusieurs processus l'interrogeront en même temps .DB, puis configurez le cache en même temps. À ce stade, si la clé est une clé de point d'accès dans le système ou si un grand nombre d'entre elles tombent en panne en même temps, le volume d'accès à la base de données augmentera instantanément, provoquant une pression excessive.
Échelonner uniformément les délais d'expiration du cache des clés dans le système pour éviter les pannes de cache correspondant à un grand nombre de clés en même temps
Repenser la façon dont le cache est utilisé, lorsque ; nous passons Lorsque la clé est utilisée pour interroger des données, le cache est d'abord interrogé. Si le cache ne peut pas être interrogé à ce moment, le verrou est verrouillé via le verrou distribué. Le processus qui obtient le verrou vérifie la base de données et définit le cache. puis le déverrouille ; si d'autres processus découvrent qu'il y a un verrou, ils attendent ensuite que le déverrouillage renvoie les données mises en cache ou interrogent à nouveau la base de données.
Les valeurs correspondant à certaines clés du cache (peut-être pour l'application et un produit promotionnel) sont stockées sur une machine dans le cluster, de sorte que tout le trafic circule vers la même machine, devenant ainsi le goulot d'étranglement du système. Le défi de ce problème est qu'il ne peut pas être résolu en augmentant la capacité de la machine.
Cache de clé de hotspot client : mettez en cache la clé de hotspot correspondant à la valeur localement sur le client, et définissez un délai d'expiration. Pour chaque requête de lecture, il vérifiera d'abord si la clé existe dans le cache local. Si elle existe, elle sera renvoyée directement. Si elle n'existe pas, il accédera ensuite à la machine de cache distribué.
Distribuez la clé du hotspot en plusieurs sous-clés, puis stockez-les sur différentes machines dans le cluster de cache. Les valeurs correspondant à ces sous-clés sont les mêmes que la clé du hotspot. Lors de l'interrogation de données via des clés de point d'accès, une sous-clé est sélectionnée de manière aléatoire via un algorithme de hachage, puis on accède à la machine de cache pour distribuer les points d'accès à plusieurs sous-clés.
Pour plus d'articles techniques liés à Redis, veuillez visiter le Tutoriel Redis colonne pour apprendre !
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!