Maison > Article > base de données > Comment résoudre l'avalanche et la pénétration de Redis
Pénétration du cache
La pénétration du cache fait référence à l'interrogation de données qui n'existent définitivement pas. Étant donné que le cache manque, les requêtes ultérieures sur la base de données ne peuvent pas. Les résultats de la requête ne seront pas écrits dans le cache, ce qui entraînera chaque requête à demander la base de données, provoquant une pénétration du cache (Apprentissage recommandé : Tutoriel vidéo Redis)
Solution
Filtrage Bloom
Stockage de tous les paramètres de requête possibles sous forme de hachage, La vérification est effectuée en premier au niveau de la couche de contrôle, et jeté s'il ne correspond pas, évitant ainsi la pression des requêtes sur le système de stockage sous-jacentmise en cache des objets vides
Mais il y a deux problèmes avec ; cette méthode :
Si des valeurs nulles peuvent être mises en cache, cela signifie que le cache a besoin de plus d'espace pour stocker plus de clés, car il peut y avoir de nombreuses clés avec des valeurs nullesMême si le délai d'expiration est défini pour des valeurs nulles, il y aura toujours une incohérence entre les données de la couche de cache et de la couche de stockage pendant un certain temps, ce qui sera problématique pour les entreprises qui doivent maintenir la cohérence.
Avalanche de cacheL'avalanche de cache signifie que, parce que la couche de cache transporte un grand nombre de requêtes, la couche de stockage est efficacement protégée, mais si la couche de cache dans son ensemble ne peut pas être utilisé pour certaines raisons. Pour fournir des services, toutes les demandes atteindront la couche de stockage et le nombre d'appels à la couche de stockage augmentera considérablement, provoquant également le blocage de la couche de stockage.
SolutionAssurer la haute disponibilité des services de couche de cache
Même pour les particuliers Les nœuds, les machines individuelles ou même la salle informatique sont en panne, les services peuvent toujours être fournis. Par exemple, Redis Sentinel et Redis Cluster ont atteint une haute disponibilité.
Dépendez du composant d'isolation pour limiter et rétrograder le flux backendAprès l'expiration du cache, contrôlez le nombre de threads lisant la base de données et écrivant le cache via le verrouillage ou faire la queue. 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.
Préchauffage des donnéesVous pouvez utiliser le mécanisme de rechargement du cache pour mettre à jour le cache à l'avance, puis déclencher manuellement le chargement de différentes clés dans le cache avant un accès simultané important se produit et définissez un délai d'expiration différent, afin que le délai d'invalidation du cache soit aussi uniforme que possible.
Pour plus d'articles techniques liés à Redis, veuillez visiter la colonne
Tutoriel de démarrage de RedisCe 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!