在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
众所周知,想要提高系统的性能,缓存是最直接也是最简单的方法之一。缓存一方面可以减少数据库负载,另一方面还可以减少相应时间并且节省成本。今天,小编将向大家介绍几种比较常见的缓存策略,即Cache-Aside、Read-Though Cache、Write-Through Cache、Write-Around和Write-Back。下面让我们一起对比分析一下常用缓存策略的优劣以及使用场景吧!
缓存策略一:Cache-Aside
Cache-Aside可以说时最常用的缓存策略。缓存位于一边,应用程序直接与缓存和数据库对话。应用程序首先检查缓存;如果在缓存中找到,表示已经命中缓存。数据被读取并返回给应用程序;如果在缓存中没有找到,则未命中缓存。应用程序必须做一些额外的工作,它需要查询数据库来读取数据,将数据返回给客户端,然后还要将数据存储在缓存中,这样对相同数据的后续读取可以命中缓存。该项策略适合读多的应用场景。使用Cache-aside的系统对缓存失效具有一定的弹性。如果缓存集群宕机,系统仍然可以通过直接访问数据库进行操作。另外,缓存中的数据模型可以与数据库中的数据模型不同。
缓存策略二:Read-Though Cache
Read-though策略下的缓存与数据库保持一致。当缓存丢失时,它从数据库加载相应的数据,填充缓存并将其返回给应用程序。cache-aside和read-through策略都是延迟加载数据的,也就是说,只在第一次读取数据时才加载数据。对比read-through和cache-aside,它们的最大区别在于,在cache-aside中应用程序负责从数据库中获取数据并填充缓存。在read-through中,此逻辑通常由库或独立缓存提供程序支持,而且read-through cache中的数据模型不能与数据库中的数据模型不同。总的来讲,read-through缓存最适合于读量较大的工作负载。劣势是,当第一次请求数据时,它总是导致缓存丢失,并导致额外的数据加载到缓存的代价。
缓存策略三:Write-Through Cache
在这种缓存策略中,首先将数据写入缓存,然后写入数据库。缓存与数据库保持一致,写操作总是通过缓存到达主数据库。就其本身而言,write-through缓存似乎没有多大作用,实际上,它们引入了额外的写延迟,因为数据先写到缓存,然后写到主数据库。但是,当与read-through结合使用时,我们获得了read-through的所有好处,还获得了数据一致性保证,使我们不必使用缓存失效技术。DynamoDB Accelerator (DAX)是write-through / read-through cache的一个很好的例子。它与DynamoDB和应用程序内联。对DynamoDB的读写可以通过DAX完成。
缓存策略四:Write-Around
这种缓存策略下,数据直接写入数据库,只有读取的数据才能进入缓存。Write-around可以与read-through结合使用,并在数据只写一次、读取次数较少或从不读的情况下提供良好的性能。例如,实时日志或聊天室消息。同样,这个模式也可以与cache-aside组合使用。
缓存策略五:Write-Back
这种缓存策略下,应用程序将数据写入缓存,缓存会立即确认,并在延迟一段时间后将数据写入数据库。有时这种策略也被称为write-behind。Write-back缓存提高了写性能,对于写工作量大的工作负载非常有用。当与read-through相结合的时候,它对于混合工作负载非常有效,最近更新和访问的数据总是在缓存中可用。它对数据库故障具有很大程度上的弹性,可以容忍一些数据库的宕机。如果支持批处理或合并,则可以减少对数据库的总体写操作,这将减少负载并降低成本。一些开发人员使用Redis时,同时采用了cache-aside和write-back两种策略,以便更好地吸收峰值负载期间的峰值。这种缓存策略的优劣十分明显,它主要劣势是,如果缓存失效,数据可能会永久丢失。大多数关系数据库存储引擎的内部都默认启用了回写缓存。查询首先写入内存,最后刷新到磁盘。
以上就是常用缓存策略的优劣对比,相信通过这篇文章大家可以根据具体的应用场景,选择最合适的缓存策略。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
电脑软件编程入门怎么学?初学者学习电脑软件编程规划
电脑软件编程入门怎么学?困扰零基础学习者的一方面是学习内容,另一方面是学习方式。其实电脑软件编程是一个很广的概念,学习之前要先确定学习方向,这样才能制定有效的学习计划,下面是小编规划的一份初学者学习电脑软件编程的方案,以供大家参考。
7840
2019-09-11 14:52:37
如何自学电脑编程入门?
现在关于编程的行业十分火爆,这让许多小伙伴都动了学习编程,以后从事编程相关行业的心。但说起学习,又有许多人担心自己完全是个零经验的小白,不知该如何去自学编程,如何如何自学电脑编程入门?
7569
2020-06-15 16:45:13
菜鸟学习编程应该从哪里入门?
菜鸟学习编程应该从哪里入门?对于完全零基础的初学者来说,在学习编程之前应该从计算机系统的基础知识学起。即使是很多计算机专业的大学生,一开始也是从了解计算机系统开始的。当然,仅仅靠自学想要掌握IT编程还是很难的,建议大家可以在博学谷学习一下专门针对零基础的免费课程,同时自己跟着动手敲敲代码,学习效果会更好。另外,选择就业班还会有量身定制的学习计划和一对一的在线老师辅导。
6509
2020-07-09 13:00:56
程序员必备的核心基础知识是什么?
随着中国互联网技术的发展,许多IT技术从业者常常会被不断迭代的新技术弄得无比焦虑,往往这个还没学会,就又有新的技术出来了,似乎学习的进度永远跟不上技术发展的脚步。其实不论新技术如何更替,掌握一些核心基础知识才是程序员安身立命的根本。那么,程序员必备的核心基础知识是什么呢?
5451
2020-07-22 11:12:31
虚拟机软件有哪些?分别有哪些作用?
虚拟机软件有哪些?分别有哪些作用?常用虚拟机软件有Vmware和VirtualBox,模拟一个真实的计算机,如一个虚拟的电脑,对于快速学习一个新的操作系统就可以通过虚拟机来完成。
4991
2022-02-12 15:10:53
热门文章
- 前端是什么
- 前端开发的工作职责
- 前端开发需要会什么?先掌握这三大核心关键技术
- 前端开发的工作方向有哪些?
- 简历加分-4步写出HR想要的简历
- 程序员如何突击面试?两大招带你拿下面试官
- 程序员面试技巧
- 架构师的厉害之处竟然是这……
- 架构师书籍推荐
- 懂了这些,才能成为架构师 查看更多
扫描二维码,了解更多信息
