当前位置:网站首页>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
边栏推荐
- Button wizard business running learning - commodity quantity, price reminder, judgment Backpack
- Go context basic introduction
- system design
- 按键精灵跑商学习-商品数量、价格提醒、判断背包
- uniapp---初步使用websocket(长链接实现)
- How to teach yourself to learn programming
- Regular expression (I)
- 什么是 DevSecOps?2022 年的定义、流程、框架和最佳实践
- Check 15 developer tools of Alibaba
- Golang Modules
猜你喜欢
JDBC and MySQL database
Pcl:: fromrosmsg alarm failed to find match for field 'intensity'
Hands on deep learning (38) -- realize RNN from scratch
Hands on deep learning (45) -- bundle search
六月份阶段性大总结之Doris/Clickhouse/Hudi一网打尽
Hands on deep learning (39) -- gating cycle unit Gru
C language pointer interview question - the second bullet
Reasons and solutions for the 8-hour difference in mongodb data date display
How can Huawei online match improve the success rate of player matching
Hands on deep learning (40) -- short and long term memory network (LSTM)
随机推荐
Pcl:: fromrosmsg alarm failed to find match for field 'intensity'
uniapp 处理过去时间对比现在时间的时间差 如刚刚、几分钟前,几小时前,几个月前
【Day1】 deep-learning-basics
Application of safety monitoring in zhizhilu Denggan reservoir area
What are the advantages of automation?
Hands on deep learning (32) -- fully connected convolutional neural network FCN
Hands on deep learning (III) -- Torch Operation (sorting out documents in detail)
Work order management system OTRs
System. Currenttimemillis() and system Nanotime (), which is faster? Don't use it wrong!
Reasons and solutions for the 8-hour difference in mongodb data date display
Deep learning 500 questions
Idea SSH channel configuration
直方图均衡化
C language pointer interview question - the second bullet
Network disk installation
Press the button wizard to learn how to fight monsters - identify the map, run the map, enter the gang and identify NPC
品牌连锁店5G/4G无线组网方案
2020-03-28
The future education examination system cannot answer questions, and there is no response after clicking on the options, and the answers will not be recorded
技术管理进阶——如何设计并跟进不同层级同学的绩效