Dans les projets de travail réels, Le cache devient très simultané、Éléments clés de l'architecture haute performance ,AlorsRedisPourquoi peut - on l'utiliser comme cache?Les deux principales caractéristiques qui peuvent être utilisées comme cache:
Parce queRedis La nature a ces deux caractéristiques,RedisBasé sur la mémoire,Et il a un mécanisme parfait d'élimination des données,Idéal comme composant de cache.
Parmi eux,Opérations basées sur la mémoire,La capacité peut être32-96GB,Et la durée moyenne de fonctionnement est de100ns,Efficacité opérationnelle élevée.Et il y a beaucoup de mécanismes d'élimination des données,InRedis 4.0 Après.8Les graines poussentRedisIl y a beaucoup de scènes disponibles comme cache.
C'est...RedisPourquoi le cache a - t - il besoin d'un mécanisme d'élimination des données?Où est - il?8Et le mécanisme d'élimination des données?
RedisMise en cache basée sur la mémoire,Sa capacité de cache est limitée,Quand le cache est plein,À ce moment - là,RedisQue dois - je faire??
RedisSi le cache est plein,RedisIl faut mettre en cache le mécanisme d'obsolescence des données,Certaines données sont effacées par certaines règles d'élimination,Rendre le Service de cache réutilisable.AlorsRedisQuelles politiques d'obsolescence sont utilisées pour effacer les données?
InRedis 4.0 Après,Redis Stratégie d'élimination du cache6+2Espèce,Comprend trois grandes catégories:
Ne pas éliminer les données
Dans l'alignement des valeurs clés qui définit le temps d'expiration,
Dans toutes les paires de clés,
Note: LRU( Utilisation minimale récente,Least Recently Used)Algorithmes, LRUMaintenir une liste bidirectionnelle ,La tête et la queue de la liste indiquent respectivement MRU Fin et LRU Fin,Représente les données les plus récentes et les moins récentes, respectivement.
LRU Lorsque l'algorithme est mis en oeuvre,Toutes les données mises en cache doivent être gérées à l'aide d'une liste liée,Cela entraînera des frais généraux d'espace supplémentaires.Et,Quand les données sont accessibles,Vous devez déplacer ces données sur la liste liée à MRU Fin,Si une grande quantité de données est accessible,Il y aura beaucoup de mouvements de liste liés,Ça va prendre du temps,Et ça diminue Redis Performance du cache.
Parmi eux,LRUEtLFU Basé surRedisStructure de l'objet pourredisObjectDelruEtrefcountPropriété implémentée:
RedisDeLRUSera utiliséredisObjectDelruDate de la dernière visite enregistrée,Paramètres aléatoiresmaxmemory-samples Nombre configuré comme Collection candidate,Sélectionner parmi lru Éliminer les données ayant la plus faible valeur d'attribut.
Dans le projet réel,Comment choisir un mécanisme d'élimination des données??
Je comprends.RedisAprès le mécanisme d'obsolescence du cache,Viens voir.RedisCombien de modes ont - ils comme cache??
RedisLe mode cache est basé sur la réception des demandes d'écriture,Peut être divisé en cache en lecture seule et cache en lecture - écriture:
Cache en lecture seule:Ne traiter que les opérations de lecture,Toutes les opérations de mise à jour sont dans la base de données,Afin que les données ne soient pas perdues.
Lire et écrire le cache,Les opérations de lecture et d'écriture sont effectuées dans le cache,Défaillance du temps d'arrêt,Perte de données.La mise en cache des données de mise à jour vers la base de données est divisée en deux types: synchrone et asynchrone:
Synchroniser:Faible performance d'accès,Il met davantage l'accent sur la fiabilité des données.
Asynchrone:Risque de perte de données,Il met l'accent sur l'accès à faible latence
Les données de requête sont d'abord lues à partir du cache,Si le cache n'existe pas,Lire les données dans la base de données,Mise à jour vers le cache après avoir obtenu les donnéesCacheMoyenne,Mais mettre à jour les opérations de données,Va d'abord mettre à jour les données de la classe de base de données,Les données du type de cache sont ensuite invalidées.
EtCache AsideLe modèle comporte un risque de concurrence:L'opération de lecture a manqué le cache,Puis Interrogez la base de données pour obtenir des données,Les données ont été questionnées et n'ont pas été mises en cache,En même temps, une opération d'écriture de mise à jour invalide le cache,Ensuite, lisez l'opération et chargez la requête dans le cache de données.,Données sales qui provoquent le cache.
Les données de requête et de mise à jour accèdent directement au service de cache,Le Service de mise en cache met à jour les données dans la base de données de façon synchrone.Faible probabilité de données sales,Mais dépend fortement du cache,La stabilité du Service de mise en cache est fortement requise,Mais la synchronisation des mises à jour peut entraîner de mauvaises performances.
Les données de requête et de mise à jour accèdent directement au service de cache,Mais le Service de mise en cache met à jour les données dans la base de données de façon asynchrone(Par des tâches asynchrones)?Vite!,Ça va être très efficace.,Mais la cohérence des données est faible,Il peut également y avoir une perte de données,La logique de mise en œuvre est également compliquée.
Sélectionner le mode de mise en cache en fonction des besoins réels du scénario d'affaires dans le développement réel du projet.Après avoir compris ce qui précède,,Pourquoi notre application a - t - elle besoin deredisEt le cache??
Utilisé dans l'applicationRedisLa mise en cache améliore les performances du système et la concurrence,Principalement incarné dans
Bien queRedisLa mise en cache améliore considérablement les performances du système,Mais le cache est utilisé,Il y a des problèmes.,Par exemple,,Le cache est incompatible avec la base de données dans les deux sens、Cache avalanche, etc.,Comment résoudre ces problèmes??
Cache utilisé,Il y a des problèmes.,Principalement incarné dans:
Cache en lecture seule(Cache AsideMode)
PourCache en lecture seule(Cache AsideMode), Les opérations de lecture se produisent dans le cache,Les données incohérentes ne se produisent que lorsqueSuppression et modificationAllez.(Aucune nouvelle action,Parce que l'ajout ne sera traité que dans la base de données),Lorsqu'une opération de suppression se produit,Le cache marque les données comme invalides et met à jour la base de données .Ainsi, lors de la mise à jour de la base de données et de la suppression des valeurs mises en cache,Peu importe l'ordre dans lequel ces deux opérations sont effectuées, qui est le premier et qui est le dernier,Si une opération échoue, il y aura une incohérence des données..
Après des mois et des jours, Ce qui suit est une compréhension approfondie de l'inductionJavaDocumentation de la machine virtuelle,J'espère que cela vous aidera à réussir l'entrevue.
Comme l'ensemble du document est assez complet,Plus de contenu,L'espace n'est pas autorisé,Voici une capture d'écran .
En raison des limites d'espace,La documentation détaillée est trop complète,Trop de détails,Donc juste une capture d'écran de quelques points de connaissance pour une introduction approximative,Chaque petit noeud a un contenu plus détaillé!