当前位置:网站首页>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:00 【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
边栏推荐
- CV目标检测模型小抄(1)
- Pikachu shooting range SQL injection search injection clearance steps
- cpu温度多少正常 cpu长期100度会烧吗
- esphome自制红外遥控器接入HA,用来控制灯光,开关等,可使用任意遥控控制
- What if the file copied by SSD is only dozens of KB? Solution to slow copying speed after installing hard disk in computer
- Demo19- (to be updated)
- Electromagnetic field and electromagnetic wave experiment 4. Be familiar with the application of CST Studio Software in the electromagnetic field
- How to adjust the resolution of the computer with two monitors? Skills of setting different resolutions for two monitors
- 百度钱包帮你还信用卡 跨行还款0手续费 实时到帐 新人奖励5元
- bin文件怎么打开查看?路由器备份出来的bin文件读取方法图解
猜你喜欢

实现OPC UA publish/subscribe单次发送

ESP32教程(一):VScode+platformIO和Vscode+ESP-IDF两种开发环境搭建
![[matlab project practice] sine sweep (sine sweep signal)](/img/14/9f66d1c90d56409fd4d5c7540d9c27.png)
[matlab project practice] sine sweep (sine sweep signal)

AIRIOT答疑第5期|如何使用低代码业务流引擎?

Demo19-(待更新)

什么程序员在35岁依然被公司抢着要?打破程序员“中年危机”

事件抽取文献整理(2020-2021)

Kotlin learning quick start (8) - Delegation

Flink data source disassembly and analysis (Wikipedia editssource)

postman “status“: 500, “error“: “Internal Server Error“, “message“: “The request was rejecte“
随机推荐
实现OPC UA publish/subscribe单次发送
分享一个qt实现的登录界面模板
ESP32教程(一):VScode+platformIO和Vscode+ESP-IDF两种开发环境搭建
What is the difference between GPU and CPU? Introduction to the meaning of GPU in different computers
What problems do let and const solve and the differences between them
Huawei shengteng competition materials
电脑待机要按什么键解除 解除电脑睡眠模式的步骤
Why is the computer screen yellowing? What is the reason for the yellowing of the monitor screen and the troubleshooting method
What if ICBC online banking assistant cannot be installed? ICBC online banking assistant installation failure solution
How to delete non system files on disk C. summary of files that can be deleted when disk C is popular
How to add a website as a trusted trusted site setup tutorial
微软测双胞胎工具twinsornot怎么玩?测双胞胎工具twinsornot玩法介绍
GB28181流媒体服务LiveGBS使用和二次开发中常见问题总结
threejs+shader绘制常用的图形
电脑桌面卡住了怎么办?电脑死机桌面卡死现象的解决办法介绍
局域网SDN技术硬核内幕 - 15 三 从物到人 园区用户漫游的MPLS实现
电脑分区时出现'磁盘上没有足够的空间完成此操作'的解决办法
Iterators and generators in JS (detailed explanation)
个性自定义财付通姓名 自定义财付通为马化腾等任意名字图解
电脑不能截屏怎么办?电脑的快捷截屏键无法使用的解决办法