Maison > Article > base de données > Qu'est-ce que l'avalanche Redis
L'explication anglaise de l'avalanche de cache Redis est le bison en cours d'exécution, ce qui signifie qu'après le crash de la couche de cache, le trafic simultané sera comme le bison au galop, avec une grande quantité de stockage back-end. Pour certaines raisons, et l'échec global de la fourniture de services, toutes les demandes atteindront la couche de stockage et le nombre d'appels à la couche de stockage augmentera considérablement, provoquant le blocage de la couche de stockage.
1. Qu'est-ce qu'une avalanche
Parce que la couche cache transporte un grand nombre de requêtes, elle protège efficacement la couche de stockage, mais si pour certaines raisons, le cache ne peut pas fournir les services dans leur ensemble, toutes les demandes atteindront la couche de stockage et le nombre d'appels à la couche de stockage augmentera considérablement, provoquant le blocage de la couche de stockage. L'explication anglaise de l'avalanche de cache est l'exécution de bison, ce qui signifie qu'après le crash de la couche de cache, le trafic simultané sera comme un bison au galop, avec une grande quantité de stockage back-end.
Un scénario où ce problème existe est le suivant : lorsque le serveur de cache est redémarré ou qu'un grand nombre de caches échouent dans un certain laps de temps, donc lorsqu'ils échouent, une grande quantité de données accèdera directement à la base de données, ce qui posera un énorme problème pour la pression de la DB.
2. Solution
(1) Configurer la haute disponibilité du cluster Redis et du cluster DB Si Redis tombe en panne, il peut être immédiatement remplacé par. un autre La machine prend le relais. Cela peut prévenir certains risques.
(2) Utilisez des verrous mutex
Une fois le cache expiré, contrôlez le nombre de threads qui lisent et écrivent la base de données en verrouillant ou en mettant en file d'attente. Par exemple : un seul thread est autorisé à interroger les données et à écrire dans le cache pour une certaine clé, tandis que les autres threads attendent. S'il s'agit d'une machine autonome, vous pouvez utiliser synchronisé ou verrouiller pour le résoudre. S'il s'agit d'un environnement distribué, vous pouvez utiliser la commande redis setnx pour le résoudre.
(3) Différentes clés peuvent être définies sur différents délais d'expiration pour rendre les points temporels d'invalidation du cache incohérents et essayer d'obtenir une distribution uniforme.
(4) Ne jamais expirer
Redis est configuré pour ne jamais expirer. Cela garantit qu'il n'y aura pas de problèmes de point d'accès, c'est-à-dire qu'il n'expirera pas physiquement.
(5) Protection des ressources
À l'aide de l'hystrix de Netflix, vous pouvez isoler le pool de threads de diverses ressources pour protéger le pool de threads principal.
Tutoriel recommandé : "Tutoriel Redis"
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!