缓存:系统设计中至关重要的一环

1*miHYi3-erQzdPaF0arbxwQ.png

什么是缓存?

缓存就像是一个超快速的存储区域,保存了计算机或手机经常使用的内容的副本,这样可以在不访问较慢的主存储器的情况下快速获取。

一个现实中的例子可以是,每当我们购买杂货时,通常会倾向于大量购买,这样可以让杂货多存放一段时间,避免频繁去市场购买,这其实就是将杂货缓存在我们附近,而不是每次都从市场购买。

在系统设计中,如果缓存得当,它可以显著提升系统的性能。

缓存策略取决于数据访问模式,即数据是如何读取或写入的。例如:

?系统是读取密集型还是写入密集型??系统是否需要高一致性?

等等……

因此,选择正确的写入缓存策略非常关键,下面是一些不同的缓存策略

1. 缓存旁路(懒加载)

在这种设置中,应用程序缓存被分离出来,应用程序显式地与缓存和数据库一起工作。这是一种技术,应用程序代码负责管理缓存。当需要时,应用程序会将数据显式加载到缓存中,而缓存不会主动参与数据获取。

缓存:系统设计中至关重要的一环
1*kf4ytjqSKx-UAYaA-MW4Hw.png

缓存旁路

该图示了其工作原理。

使用场景:

适用于读取密集型系统,Redis 或 Memcached 非常受欢迎,我曾经在缓存旁路设置中使用过 Redis 以及 Mongo-db,效果非常显著。

这种读取技术可以与诸如写入旁路缓存之类的数据写入技术相结合,我接下来会解释。

优点:

?灵活性:允许选择性缓存特定数据。?控制:应用程序控制数据何时加载到缓存中。

缺点:

?提供过期数据:可能会提供过期数据,但如果我们实现了缓存的TTL(生存时间),则可以避免这种情况。

2. 写入旁路

跳过缓存,直接将数据写入数据库,并在读取用户请求的数据时更新缓存。

使用场景:

写入旁路可以与读取通过结合,对于数据写入一次,读取频率较低或几乎不读取的情况下提供良好的性能,例如实时日志或聊天室消息。同样,这种模式也可以与缓存旁路结合使用。

3. 读取穿透缓存

读取穿透缓存是一种策略,当发生缓存未命中时,缓存会自动从底层数据源检索数据并填充自身。这种技术与应用程序的数据访问层无缝集成,确保缓存与数据源保持同步。

缓存:系统设计中至关重要的一环
1*h-CUV05gwKCUl7GdFfS_Nw.png

读取穿透缓存

使用场景、优点和缺点:

读取穿透缓存适用于读取密集的工作负载,当同一数据被多次请求时。例如,一个新博客。缺点是,当首次请求数据时,总是会导致缓存未命中,并造成额外的数据加载开销。

4. 写入穿透缓存

写入穿透缓存是一种策略,其中写操作同时应用于缓存和底层数据源。这确保了缓存和数据源保持同步,但与写入后缓存相比可能会引入额外的延迟。它同步应用更新。

1*7TjoMj10e–091ttHEKvTg.png

使用场景、优点和缺点:

当与读取穿透缓存结合时,写入穿透缓存可以保证每次读取和写入的数据一致性。但它会增加写操作的额外开销,因为每次写入都需要两次写入操作(缓存和数据库)。它以异步方式应用更新。

5. 写入后缓存

写入后缓存,也称为写回缓存,涉及在写操作发生时延迟对数据源的更新。系统不会立即更新底层存储,而是首先更新缓存,然后异步将更改传播到数据源。

1*Sfn9HMtmSggo3FCQIyxJPQ.png

使用场景、优点和缺点:

写回缓存提高了写入性能,非常适用于写入密集型任务。当与读取穿透结合时,适用于混合工作负载,确保最近的

数据可用。

总结:

本文探讨了缓存技术,强调了根据数据访问模式选择正确策略的重要性。了解这些缓存策略对于在不同场景中优化系统性能至关重要。

原创文章,作者:小技术君,如若转载,请注明出处:https://www.sudun.com/ask/34035.html

(0)
小技术君's avatar小技术君
上一篇 2024年4月7日 下午2:10
下一篇 2024年4月7日 下午2:12

相关推荐

  • HTTPS加密原理,为什么需要加密 ✦

      问题缘由 有一天我正在兴致勃勃的上网冲浪,突然我的好朋友给我发了一个网址abcd.com,并告诉我这是他发现的好看的东西。我迫不及待地复制粘贴到我的浏览器里,但不幸的…

    2024年5月16日
    0
  • 速盾:免费cdn加速服务器有哪些特点

    免费CDN加速服务器特点与技术解析 在现代互联网环境中,免费CDN加速服务器成为许多开发者和网站运营者的选择,为其提供了便捷且经济的性能优化方案。本文将深入研究速盾网络免费CDN加…

    CDN资讯 2024年1月30日
    0
  • CDN怎么绑定虚拟主机

    绑定CDN到虚拟主机通常涉及到几个步骤,旨在将你的网站内容通过CDN服务分发,以提升网站的加载速度和全球可访问性。下面是一个通用的流程,具体步骤可能会根据CDN提供商和虚拟主机服务…

    CDN资讯 2024年3月3日
    0
  • CDN节点存储空间怎么管理?

    CDN(内容分发网络)作为提高网站性能和加速访问速度的解决方案,在实际应用中需要有效地管理其节点存储空间,以确保内容的高效分发和访问。下面将介绍一些CDN节点存储空间管理的方法和技…

    2024年4月17日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注