当前位置:网站首页>Si vous ne connaissez pas ces quatre modes de mise en cache, vous osez dire que vous connaissez la mise en cache?
Si vous ne connaissez pas ces quatre modes de mise en cache, vous osez dire que vous connaissez la mise en cache?
2022-07-04 10:19:00 【Nouveau champ de vision du programme】
Généralités
Dans l'architecture du système,La mise en cache est l'un des moyens les plus simples de fournir des performances système,Les étudiants qui ont un peu d'expérience dans le développement doivent avoir affaire à la mise en cache,Au moins, j'ai fait ça..
Si elle est utilisée correctement,Le cache réduit le temps de réponse、Réduire la charge de la base de données et économiser des coûts.Mais si le cache n'est pas utilisé correctement,Il peut y avoir des problèmes inexplicables..
Dans différents scénarios,Les politiques de mise en cache utilisées varient également.Si, dans vos impressions et expériences,,Le cache n'est qu'une simple requête、Opération de mise à jour,Cet article vaut vraiment la peine d'être étudié..
Ici,Expliquer systématiquement4Modèles de cache et leurs scénarios d'utilisation、Processus et avantages et inconvénients.
Sélection des politiques de mise en cache
Essentiellement,,La politique de mise en cache dépend des données et des modes d'accès aux données.En d'autres termes,,Comment les données sont - elles écrites et lues?.
Par exemple:
- Le système écrit - il plus et lit moins??(Par exemple,Journal basé sur le temps)
- Les données ne sont - elles écrites qu'une seule fois et lues plusieurs fois??(Par exemple,Profil de l'utilisateur)
- Les données retournées sont - elles toujours uniques??(Par exemple,Recherche de requêtes)
Choisir la bonne politique de mise en cache est la clé de l'amélioration des performances.
Il existe cinq stratégies de mise en cache couramment utilisées::
- Cache-Aside Pattern:Contournement du mode cache
- Read Through Cache Pattern:Lire le mode de pénétration
- Write Through Cache Pattern:Mode de pénétration de l'écriture
- Write Behind Pattern:Encore.Write Back, Mode d'écriture du cache asynchrone
La Division de la stratégie de mise en cache décrite ci - dessus est basée sur le processus de lecture et d'écriture des données , Dans certaines politiques de cache, les applications n'interagissent qu'avec le cache , Certaines politiques de mise en cache permettent aux applications d'interagir simultanément avec le cache et la base de données . Parce que c'est une dimension importante de la Division stratégique , Donc, tout le monde doit être très attentif à l'apprentissage ultérieur du processus .
Cache Aside
Cache Aside Est le mode de mise en cache le plus courant , L'application peut parler directement au cache et à la base de données .Cache Aside Peut être utilisé pour les opérations de lecture et d'écriture .
Lire l'opérationOrganigramme de:
Processus de lecture des opérations :
L'application a reçu une requête de données (Lire)Demande;
Si les données demandées par l'application sont dans le cache :
- Si elle existe(Cache hit), Rechercher les données du cache ,Retour direct;
- S'il n'existe pas(Cache miss), Extraire les données de la base de données ,Et le mettre en cache,Renvoie les données des résultats;
Ici, nous devons surveiller les limites d'une opération , C'est - à - dire que les opérations de la base de données et du cache sont effectuées directement par l'application .
Écrire l'opérationOrganigramme de:
Écrire ici ,Y compris la création、Mise à jour et suppression.Pendant l'opération d'écriture,Cache Aside Le mode est de mettre à jour d'abord la base de données (Ajouter、Supprimer、Modifier), Puis supprimez le cache directement .
Cache Aside On peut dire que le modèle s'applique à la plupart des scénarios , Généralement pour répondre à différents types de données , Il existe également deux politiques pour charger le cache :
- Charger le cache lorsqu'il est utilisé : Lorsque des données mises en cache sont nécessaires , Recherche dans la base de données , Après la première requête , Demandes subséquentes pour obtenir des données du cache ;
- Cache préchargé : Précharger les informations mises en cache par le programme au démarrage du projet ou après le démarrage ,Par exemple,”Informations sur le pays、 Informations monétaires 、Informations sur l'utilisateur,Informations de presse“ Attendre des données qui ne changent pas souvent .
Cache AsideIdéal pour lire plus et écrire moins,Comme l'information de l'utilisateur、Nouvelles, etc, Une fois le cache écrit , Avec peu de modifications . L'inconvénient de ce schéma est qu'il peut y avoir des incohérences entre le cache et la double écriture de la base de données .
Cache Aside C'est aussi un modèle standard ,CommeFacebook C'est le modèle utilisé .
Read Through
Read-ThroughEtCache-AsideC'est très similaire., La différence est que le programme n'a pas besoin de se concentrer sur où lire les données ( Cache ou base de données ), Il suffit de lire les données du cache . Et l'origine des données dans le cache est déterminée par le cache .
Cache AsideC'est l'appelant qui charge les données dans le cache,EtRead ThroughEnsuite, utilisez le service cache pour charger,Donc transparent pour l'applicateur.Read-Through L'avantage est de rendre le Code du programme plus concis .
Il s'agit des limites opérationnelles de l'application dont nous avons parlé plus haut , Voir l'organigramme directement :
Dans l'organigramme ci - dessus , Concentrez - vous sur les opérations à l'intérieur du cadre pointillé , Cette partie de l'opération n'est plus traitée par l'application , C'est le cache lui - même qui gère .C'est - à - dire, Lorsqu'une application interroge une donnée du cache , Si les données n'existent pas, le cache complète le chargement des données , Enfin, le cache renvoie les résultats des données à l'application .
Write Through
InCache AsideMoyenne, L'application doit maintenir deux datastores :Un cache,Une base de données. Pour la demande ,C'est un peu compliqué.
Write-ThroughEn mode, Toutes les écritures sont mises en cache , Chaque fois que vous écrivez des données dans le cache , Le cache maintient les données dans la base de données correspondante , Et ces deux opérations sont effectuées en une seule transaction .Donc,, Ce n'est que deux fois que l'écriture a réussi que l'écriture a finalement réussi . L'inconvénient est le retard d'écriture ,L'avantage est d'assurer la cohérence des données.
Peut être compris comme, L'application considère l'arrière - plan comme un seul stockage , Et le stockage se maintient lui - même Cache.
Parce que le programme n'interagit qu'avec le cache , Le codage sera plus simple et plus propre , Cela devient particulièrement évident lorsque la même logique doit être réutilisée à plusieurs endroits .
Lorsqu'il est utiliséWrite-ThroughHeure, Généralement utilisé avec Read-ThroughPour utiliser.Write-Through Le scénario d'utilisation potentielle est le système bancaire .
Write-Through Le cas échéant: :
- Les mêmes données doivent être lues fréquemment
- Je ne supporte pas la perte de données (RelativementWrite-BehindEn termes) Incohérence avec les données
En serviceWrite-Through Une attention particulière doit être accordée à la gestion de l'efficacité du cache , Sinon, une grande quantité de cache consommera des ressources de mémoire . Même les données de cache valides sont effacées par des données de cache invalides .
Write-Behind
Write-BehindEtWrite-ThroughIn” Le programme n'interagit qu'avec le cache et n'écrit que des données à travers le cache “ C'est très similaire. .La différence est queWrite-Through Les données sont immédiatement écrites dans la base de données ,EtWrite-Behind Après un certain temps ( Ou par d'autres moyens ) Écrire les données ensemble dans la base de données , Cette écriture asynchrone est Write-BehindLa plus grande caractéristique de.
Les opérations d'écriture de base de données peuvent être effectuées de différentes façons , Une façon est de recueillir toutes les opérations d'écriture et à un moment donné ( Comme quand la base de données est basse )Écrire en vrac. Une autre façon est de combiner plusieurs opérations d'écriture en un seul petit lot , Ensuite, les opérations d'écriture de la collection cache sont écrites en vrac ensemble .
L'écriture asynchrone réduit considérablement la latence des demandes et le fardeau de la base de données . Il amplifie également les données incohérentes . Par exemple, quelqu'un interroge les données directement à partir de la base de données , Mais les données mises à jour n'ont pas encore été écrites dans la base de données , Les données demandées à ce stade ne sont pas à jour .
Résumé
Différents modèles de cache ont des considérations et des caractéristiques différentes , Selon le scénario des exigences de l'application , Besoin de flexibilité dans le choix du mode de mise en cache adapté . Dans la pratique, de nombreux modèles sont souvent utilisés en combinaison .
Profil du blogueur:《SpringBootInsinuations techniques》Auteur de livres techniques,J'adore les techniques de forage,Écrire des articles techniques secs.
Numéro public:「Nouvelle vision du programme」,Numéro public du blogueur,Bienvenue à l'attention~
Communication Technique:Contactez le blogueur Wechat:zhuan2quan
边栏推荐
- What is devsecops? Definitions, processes, frameworks and best practices for 2022
- Hands on deep learning (40) -- short and long term memory network (LSTM)
- Pcl:: fromrosmsg alarm failed to find match for field 'intensity'
- 有老师知道 继承RichSourceFunction自定义读mysql怎么做增量吗?
- Modules golang
- Kotlin set operation summary
- Whether a person is reliable or not, closed loop is very important
- Work order management system OTRs
- For programmers, if it hurts the most...
- 基于线性函数近似的安全强化学习 Safe RL with Linear Function Approximation 翻译 2
猜你喜欢
JDBC and MySQL database
用数据告诉你高考最难的省份是哪里!
Machine learning -- neural network (IV): BP neural network
【Day2】 convolutional-neural-networks
Architecture introduction
Advanced technology management - how to design and follow up the performance of students at different levels
Number of relationship models
[FAQ] summary of common causes and solutions of Huawei account service error 907135701
How can people not love the amazing design of XXL job
How web pages interact with applets
随机推荐
Machine learning -- neural network (IV): BP neural network
Servlet基本原理与常见API方法的应用
Hands on deep learning (39) -- gating cycle unit Gru
2. Data type
Hands on deep learning (44) -- seq2seq principle and Implementation
智慧路灯杆水库区安全监测应用
Exercise 7-4 find out the elements that are not common to two arrays (20 points)
Nuxt reports an error: render function or template not defined in component: anonymous
【Day1】 deep-learning-basics
Lavel document reading notes -how to use @auth and @guest directives in lavel
System. Currenttimemillis() and system Nanotime (), which is faster? Don't use it wrong!
Hands on deep learning (38) -- realize RNN from scratch
对于程序员来说,伤害力度最大的话。。。
C language pointer classic interview question - the first bullet
今日睡眠质量记录78分
Occasional pit compiled by idea
Hands on deep learning (34) -- sequence model
Ruby time format conversion strftime MS matching format
【OpenCV 例程200篇】218. 多行倾斜文字水印
5g/4g wireless networking scheme for brand chain stores