La position actuelle:Accueil du site>Analyse de la stratégie de lecture et d'écriture du cache
Analyse de la stratégie de lecture et d'écriture du cache
2022-07-23 07:11:13【Développement de logiciels】
Préface
Soulever le cache,Nous avons d'abord pensé que le cache est un composant qui stocke les données,Son rôle est de permettre un retour plus rapide des demandes de données.
Nous mettons généralement en cache des données qui ne changent pas souvent et qui nécessitent un accès rapide,La pratique courante est d'écrire ces données en mémoire,Retour rapide des résultats souhaités lorsque l'accès est nécessaire.
En fait,,Il y a une grande différence de vitesse entre deux types de matériel,Structure utilisée pour harmoniser les différences de transmission de données entre les deux,Peut être appelé cache.
Dans le processus de développement quotidien,Nous mettons souvent les données dans un cache local(escache)Ou Cache externe(Redis)Moyenne.
Politiques de lecture et d'écriture mises en cache
La mise en cache semble simple,Tout ce qu'il faut, c'est lire le cache en premier,Requête à partir de la base de données par erreur de cache,Écrire dans le cache une fois la requête trouvée.Mais en fait,,Selon les différents scénarios d'affaires,Les politiques de lecture et d'écriture du cache sont également différentes.Nous utilisons le cache le plus commun+Scénarios de base de données pour l'analyse.
Cache Aside(Contournement du cache)Stratégie
Cache AsideC'est la stratégie la plus utilisée,Le cache n'interagit pas directement avec la base de données,C'est l'application qui traite à la fois avec le cache et la base de données.Cache AsideC'est le nom de,CacheSur le côté application(aside).
En lisant les données
- Le programme doit déterminer si les données existent déjà dans le cache
- Quand les données existent déjà dans le cache( C'est le cache hit ,cache hit),Renvoie les données directement du cache
- Quand il n'y a pas de données dans le cache(C'est - à - dire que le cache manque,cache miss),Lisez d'abord les données de la base de données,Et dans le cache,Puis les données sont retournées
Lors de l'écriture des données
- Mettre à jour d'abord la base de données
- Supprimer les données correspondantes dans le cache
Read-Write Through (Lire et écrire à travers)Stratégie
Read/Write Through Pattern Le serveur central considère le cache comme le stockage de données primaire , Lisez les données et écrivez - les . Le Service cache est responsable de la lecture et de l'écriture de ces données DB, Cela réduit la responsabilité de la demande .
En lisant les données (Read Through)
- Lire les données du cache, Lisez et retournez directement à .
- Si ça ne se lit pas , Le composant cache charge d'abord à partir de la base de données , Retour de la réponse après l'écriture au cache .
Lors de l'écriture des données (Write Through)
- Vérifiez d'abord le cache.,Il n'existe pas dans le cache,Mise à jour directe de la base de données.
- Cache hit, Mettre à jour le cache en premier , Puis le service cache met à jour la base de données lui - même ( Mise à jour simultanée du cache et de la base de données )
In Cache AsideEn bas., Quand une demande de lecture s'est produite ,Si cache Aucune donnée correspondante n'existe dans , C'est le client lui - même qui écrit les données cache,Et Read-Through La politique est que le Service de cache écrit le cache lui - même , C'est transparent pour les clients .
Read/Write Through La politique est caractérisée par le fait que les noeuds de cache, et non les utilisateurs, traitent avec la base de données ,Au cours de notre développement, Cette stratégie est moins utilisée , La raison en est que les composants de cache que nous utilisons généralement (RedisOuMemcached) N'offre pas la possibilité d'écrire dans la base de données . Cache local seulement Guava CacheDansLoading CacheOui.Read Through L'ombre de la Stratégie .
Comme vous pouvez le voir,,Parce queWrite Through La base de données doit être mise à jour en même temps que les données sont écrites , A un impact plus important sur la performance . Pouvons - nous mettre à jour la base de données de façon asynchrone ?C'est la suite.Write BackStratégie.
Write-Back( écriture de cache asynchrone )Stratégie
Write-BackStratégie etRead-Write Through Le point commun de la politique est que les deux sont des services de mise en cache qui sont responsables de la lecture et de l'écriture du cache et de la base de données .
La différence est queWrite-Back Utiliser le cache comme source de données fiable , Écrivez seulement dans le cache à chaque fois , L'écriture dans la base de données est asynchrone , Par exemple, lorsque les données sont retirées du cache, elles sont stockées dans la base de données ou mises à jour par lots après un certain temps .
Avantages: C'est que la vitesse de lecture et d'écriture est très rapide , Parce que tout est lu et écrit directement à partir du cache . Il y a une certaine tolérance à l'indisponibilité de la base de données dans le service , Lorsque la base de données n'est pas disponible , Peut également traiter les résultats normalement , Mettre à jour les données après la récupération de la base de données . Il réduit également la pression de la base de données , L'opération write Database peut être effectuée lorsque le trafic est faible .
Inconvénients:Risque de perte de données, Si le service cache est suspendu et que les données ne sont pas écrites dans la base de données à temps ,Les données seront perdues.
Parfait pour la scène: Scénarios où les données changent fréquemment et où les exigences en matière de cohérence des données sont moins élevées ,Comme le nombre de vues、C'est bon.
Résumé
Les trois stratégies de lecture et d'écriture du cache ont leurs propres avantages et inconvénients , Nous devons choisir ce qui est le mieux adapté à un scénario d'affaires particulier . Si vous lisez plus et écrivez moins , Et des exigences élevées en matière de cohérence des données ,Peut être utiliséCache AsideStratégie. Si vous écrivez plus et lisez moins , Et les exigences en matière de cohérence des données ne sont pas élevées ,C'est bon.Read-Write ThroughOuWrite-BackStratégie.
Ryan.ou
Mentions de copyright
Auteur de cet article [Développement de logiciels],Réimpression s’il vous plaît apporter le lien vers l’original, merci
https://fra.chowdera.com/2022/204/202207221942219785.html
Recommandé par sidebar
- Comment le détournement de DNS peut - il être parfaitement réparé? Comment résoudre le problème du détournement de DNS
- Flask Cross - Domain
- Mise en œuvre de la pile de chaînes (langage c)
- Lire attentivement le document DETR et analyser la structure du modèle
- [FPGA]: IP Core - - DDR3
- L'applet Wechat ne peut pas lire la propriété 'setdata' de NULL Error
- Buctf passing Diary - - [Netting Cup 2020 Qinglong Group] areuserialz
- Notes d'apprentissage du système intégré
- Cartesi mars 2022 Review
- Double pointeur quotidien leetcode - 7
Devinez que vous aimez
Ji Yuan Community ai Weekly # 90: Ma Yi pense que l'intelligence ne peut pas dépendre d'une grande puissance de calcul; Hugging face blog pour découvrir les détails de la formation bloom; Annonce du prix ICML pour la meilleure thèse
Typescript
Outils open source Introduction aux outils SAP ui5
Guide du tutoriel Lark
Sécurité du réseau - pénétration à l'aide d'une vulnérabilité de sécurité d'accès physique Evil Maid
Sécurité du réseau - pénétration et renforcement à l'aide d'une vulnérabilité locale Ubuntu
Rédaction de la classe d'outils jwt
Boom 3D Serial Number Licensing superbes Sound Enhancement and player Tools
Day1 Running SUMM of 1D Array / find pivot index / queue with two Stacks
Introduction de l'API commune de programmation de socket et mise en œuvre de socket, select, Poll et epoll
Recommandé au hasard
- Approfondir la file d'attente des conteneurs
- Méthode de rappel d'initialisation pour Bean et méthode de rappel pour libérer les ressources
- Enregistrer les données crawler dans la base de données MySQL
- Distribution des données via SQL
- Comment renouveler automatiquement les serrures distribuées redis (solution classique)
- Hongke Dynamics | cippe2022 est sur le point de se tenir, l'inscription est en cours
- Classe interne anonyme de kotlin (objet: XXXX)
- Interview raid: 6 grandes différences entre truncate, delete et Drop
- Ubuntu installe docker et les commandes de base de docker installent MySQL
- Leetcode - - Stack and queue articles
- Déploiement du cluster etcd
- Dix problèmes dans la famille de protocoles TCP / IP
- 【 stm32 learning】 (21) stm32 Implementing Stepper Motor
- Dessiner le tableau [grafana] avec les variables des critères de requête
- Reconnaître les interfaces
- LabVIEW: créer un VI
- Cadre de développement de l'interface devextreme Gantt Control - Exporter PDF, trier les tâches
- Exportation et importation de bases de données et de tableaux de données en ligne de commande MySQL
- Easyeeagle, une plate - forme intelligente d'exploitation et de maintenance avec plusieurs plateformes de base de données massives
- Vous souvenez - vous de offsetwidth, clientwidth, width, scrollwidth, clientx, screenx, offsetx, pagex dans JS?
- 【 Azure Event center】 Azure Event hub New Function attempt - GEO Disaster Recovery
- Quels sont les facteurs qui influent sur la prestation continue?
- 【 Tutoriel de démarrage rapide 7】 utilisation et introduction de l'ordinateur hôte de la station au sol de l'UAV en formation de coquille folle · Open Source
- Détails de la configuration redis
- Docker installe MySQL, redis
- Le circuit de limitation d'amplitude et le circuit de serrage utilisent la conductivité unidirectionnelle de la diode
- [carte des connaissances] cql et py2neo notes d'apprentissage
- C apprentissage des langues
- Application combinée de la ligne de transfert de colonne et de l'ensemble de données dans le scénario d'affaires
- Configuration SSL MySQL 5.6 / 5.7
- [apprentissage profond] fonction de perte (erreur absolue moyenne, erreur carrée moyenne, perte de lissage, entropie croisée, entropie croisée pondérée, perte de dé, focalloss)
- Optimisation de précision * stratégie d'optimisation 1: Réseau + optimiseur Sam
- Détails du Protocole Axi
- JS - - date Object & Ternary expression
- Leetcode - 494. Objectifs et
- L'interface utilisateur 3D ou le modèle dans l'unit é fait toujours face à la caméra et tourne avec l'angle de vue de la caméra 丨 l'angle de vue suit 丨 l'angle de vue fixe
- Discussion préliminaire sur JVM
- Déploiement de l'environnement appium pour les tests mobiles [à poursuivre]
- À propos du montage de fond, de la gestion des processus
- Lire la lecture efficace - l'auto - investissement le plus rentable