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:13Dé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).
Insérer la description de l'image ici

En lisant les données

  1. Le programme doit déterminer si les données existent déjà dans le cache
  2. Quand les données existent déjà dans le cache( C'est le cache hit ,cache hit),Renvoie les données directement du cache
  3. 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

  1. Mettre à jour d'abord la base de données
  2. 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)

  1. Lire les données du cache, Lisez et retournez directement à .
  2. 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 .
    Insérer la description de l'image ici

Lors de l'écriture des données (Write Through)

  1. Vérifiez d'abord le cache.,Il n'existe pas dans le cache,Mise à jour directe de la base de données.
  2. 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 )
    Insérer la description de l'image ici

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 .
Insérer la description de l'image ici

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é au hasard