作者 | stephanie Tang
Cache-Aside
程序需要判断缓存中是否已经存在数据。 当缓存中已经存在数据(也就是缓存命中,cache hit),则直接从缓存中返回数据 当缓存中不存在数据(也就是缓存未命中,cache miss),则先从数据库里读取数据,并且存入缓存,然后返回数据
更新数据库 更新缓存
A写数据库 B后于A写数据库 B写缓存 A写缓存 缓存和数据库中的数据不一致,缓存中的是脏数据
更新数据库 删除缓存中对应的数据
那么这种写策略会有线程安全的问题吗?有,试想一下有两个线程,线程A读,线程B写
A读数据,由于未命中那么从数据库中取数据 B写数据库 B删除缓存 A由于网络延迟比较慢,将脏数据写入缓存
应用场景
优点
缓存仅仅保存被请求的数据,属于懒加载模式(Lazy Loading),和下文的Write-Through模式相比,避免了任何数据都被写入缓存造成缓存频繁的更新。
缺点
当发生缓存未命中的情况时,则会比较慢,因为要经过三个步骤:查询缓存,从数据库读取,写入缓存。 复杂的逻辑都在应用程序中,如果实现微服务,多个微服务中会有重复的逻辑代码
Read-Through/Write-Through
Read-Through
优点
缓存不存在脏数据 相比较Cache-Aside懒加载模式,读取速度更高,因为较少因为缓存未命中而从数据库中查找 应用程序的逻辑相对简单
缺点
对于总是写入却很少被读取的应用,那么Write-Through会非常浪费性能,因为数据可能更改了很多次,却没有被读取,白白的每次都写入缓存造成写入延迟。
Write-Back
优点
写入和读取数据都非常的快,因为都是从缓存中直接读取和写入。 对于数据库不可用的情况有一定的容忍度,即使数据库暂时不可用,系统也整体可用,当数据库之后恢复的时候,再将数据写入数据库。
缺点
有数据丢失的风险,如果缓存挂掉而数据没有及时写到数据库中,那么缓存中的有些数据将永久的丢失了
Write-Around
优点
相比较Write-Through写入的时候的效率较高,如果数据写入后很少被读取,缓存也不会被没用到的数据占满。
缺点
如果数据会写入多次,那么可能存在缓存和数据库不一致
- 推荐阅读 -
往期推荐
下方二维码关注我

互联网草根,坚持分享技术、创业、产品等心得和总结~
点击“阅读原文”,领取 2020 年最新免费技术资料大全
文章转载自程序员Socket,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
数据库国产化替代深化:DBA的机遇与挑战
代晓磊
1244次阅读
2025-04-27 16:53:22
2025年4月国产数据库中标情况一览:4个千万元级项目,GaussDB与OceanBase大放异彩!
通讯员
725次阅读
2025-04-30 15:24:06
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
587次阅读
2025-04-14 09:40:20
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
501次阅读
2025-04-17 17:02:24
一页概览:Oracle GoldenGate
甲骨文云技术
475次阅读
2025-04-30 12:17:56
GoldenDB数据库v7.2焕新发布,助力全行业数据库平滑替代
GoldenDB分布式数据库
470次阅读
2025-04-30 12:17:50
优炫数据库成功入围新疆维吾尔自治区行政事业单位数据库2025年框架协议采购!
优炫软件
359次阅读
2025-04-18 10:01:22
给准备学习国产数据库的朋友几点建议
白鳝的洞穴
274次阅读
2025-05-07 10:06:14
国产数据库图谱又上新|82篇精选内容全览达梦数据库
墨天轮编辑部
273次阅读
2025-04-23 12:04:21
XCOPS广州站:从开源自研之争到AI驱动的下一代数据库架构探索
韩锋频道
269次阅读
2025-04-29 10:35:54