缓存定义

2025年3月17日 | 阅读 8 分钟

什么是缓存?

缓存(发音为“cash”)是计算机环境中用于临时存储任何内容(通常是数据)的软件或硬件部分。

为了提高对最近或经常访问数据的性能,使用少量更快、更昂贵的内存。缓存的数据会暂时存储在本地存储介质上,该介质可供缓存客户端使用,并且与主存储无关。CPU、程序、Web浏览器和操作系统都经常使用缓存。

由于海量存储和主存储无法满足客户需求,因此使用了缓存。缓存可以加快输入/输出(I/O)速度,减少延迟,并缩短数据访问时间。几乎所有应用程序工作负载都需要 I/O 操作,因此缓存可以提高应用程序性能。

Cache Memory Definition

优点

缓存有许多优点,包括以下几点:

  1. 性能-缓存是一种存储空间,可以提高计算机运行速度。例如,浏览器缓存通过存储早期浏览会话中的数据来加快后续会话的访问速度。数据检索通常需要大量时间和资源下载,而数据库缓存则可以加快此过程。
  2. 离线活动-缓存使应用程序无需互联网连接即可运行。最近访问过以及经常使用的数据可以使用应用程序缓存快速访问。但是,缓存可能无法为用户提供程序的所有功能。
  3. 资源效率-除了速度和灵活性,缓存还有助于节省物理设备的资源。例如,快速的缓存访问可以延长电池寿命。

缺点

缓存也存在一些问题,包括以下几点:

  1. 损坏-存储在缓存中的数据可能会损坏且无用。诸如浏览器之类的应用程序可能会崩溃或显示数据不正确,这可能是由于数据损坏所致。
  2. 性能-缓存通常包含较小的临时内存存储。如果它们变得过大,性能可能会受到影响。它们还可能占用其他程序所需的内存,从而损害它们的运行效率。
  3. 过时信息-应用程序缓存有时可能会显示陈旧或过时的数据。这可能导致应用程序出现 bug 或提供不准确的数据。使用来自先前会话的缓存副本将不会显示对在线更新的网站和应用程序的更改。静态内容不是问题,但动态内容(在会话期间或会话之间发生变化的内容)则是一个问题。
Cache Memory Definition

如何使用缓存?

缓存使用硬件和软件组件来存储临时文件。CPU 缓存是硬件缓存的一个示例。这是计算机 CPU 上的一小部分存储空间,用于存储常用或最近使用的基本计算机指令。

许多程序和软件本身也有自己的缓存。此类型缓存会临时存储与应用程序相关的信息、文件或指令,以便快速检索。

Web 浏览器是应用程序缓存的一个很好的例子。如前所述,每个浏览器都有一个缓存,用于存储来自先前浏览会话的数据,以供后续会话使用。由于浏览器从上一个会话保存的缓存中访问它,因此想要重新观看 YouTube 视频的用户将能够更快地加载它。

以下类别的软件也使用缓存:

  • 操作系统,用于存储常用文件和指令。
  • 内容分发网络,通过在服务器端缓存信息来更快地发送网页。
  • 用于存储将域名翻译成 Internet 协议地址所需信息的系统。
  • 数据库,它们可以减少查询延迟。

缓存类型

尽管缓存是一个通用概念,但有些形式尤为突出。如果要理解最流行的缓存策略,则有一些基本概念是不可或缺的。

1. 内存缓存

在此方法中,缓存数据存储在 RAM 中,而原始数据则存储在传统的存储系统中,RAM 被认为速度更快。此缓存形式最常使用键值数据库来实现。它们可以被视为键值对的集合。单个值充当键,缓存数据充当值。

这基本上意味着每项数据都有一个作为其标识的唯一值。如果指定了此值,键值数据库将返回相关值。这种方法快速、有效且易于理解。因此,开发人员在尝试构建缓存层时经常使用此方法。

2. 数据库缓存

每个数据库通常都包含某种形式的缓存。特别是,通常使用内部缓存来避免进行过多的数据库查询。通过缓存最近运行的查询结果,数据库可以快速提供先前缓存的数据。数据库可以因此推迟运行查询,只要请求的缓存数据仍然有效。最常见的方法是使用存储键值对的哈希表,但是,每个数据库的实现方式可能不同。如前所述,使用键来查找值。请注意,对象关系映射解决方案通常包含此形式的缓存。

3. Web 缓存

以下是两个子类别:

  • Web 客户端缓存

大多数 Internet 用户都熟悉这种缓存,它存储在客户端上。它也被称为Web 浏览器缓存,因为它通常随浏览器一起提供。它的工作方式非常合乎逻辑。浏览器在首次加载网页时会缓存页面资源,包括文本、图片、样式表、脚本和媒体文件。当再次访问同一页面时,浏览器可以在其缓存中查找先前缓存的资源,并从用户的计算机获取它们。在大多数情况下,这比通过网络下载它们要快得多。

  • Web 服务器缓存

此系统旨在将资源存储在服务器端以供将来使用。当处理动态生成的内容(开发耗时)时,这种策略尤其有用。另一方面,对于静态内容则无效。Web 服务器缓存通过防止服务器不堪重负来减少所需的工作量并加快页面交付速度。

4. CDN 缓存

内容分发网络”是指一个用于在代理服务器中缓存媒体文件、样式表和网页的系统。它在用户与源服务器之间充当网关系统,并存储其资源。当用户发出请求时,代理服务器会拦截对资源的请求,并确定它是否具有副本。如果有,用户会立即收到资源;如果没有,请求会被发送回原始服务器。用户查询会被动态路由到这些分布在全球各地的代理服务器中最接近的一个。因此,它们应该比源服务器离最终用户更近,这应该会减少网络延迟。此外,它还减少了发送到源服务器的请求量。

工作方式

缓存中的信息通常存储在可以立即访问的硬件上,例如 RAM(随机存取存储器),或者可能与软件组件结合使用。缓存的主要目标是通过消除与后面的较慢存储层进行通信的需要来提高数据检索速度。

与通常存储完整且永久数据的数据档案不同,缓存通常会以存储空间为代价,短暂地保留部分数据。

当缓存的客户端想要获取数据时,会首先检查缓存。如果在缓存中找到了数据,则表示缓存命中。缓存命中率/比率是导致缓存命中的尝试次数的百分比。

在缓存中未找到的数据会从主内存中传输并存储在缓存中。诸如此类的缓存未命中很常见。缓存算法、缓存机制和系统规则决定了如何执行此操作以及从缓存中删除哪些数据以腾出空间容纳新数据。

缓存根据各种缓存技术运行。写直通规则允许使用存储而非缓存的写入操作。通过这样做,缓存可以防止在写 I/O 高峰期溢出。此方法不会缓存数据,直到从存储中读取数据,这是一个缺点。因此,此读取操作需要更长的时间,因为数据尚未缓存。

写回缓存策略将数据同时保留在缓存和存储中。写回缓存的优点是始终缓存新写入的数据,从而可以快速读取。但是,写入操作要到数据同时写入主存储和缓存后才算完成。这可能导致写入操作延迟。

由于所有写入都定向到缓存,因此写回缓存写直通缓存类似。但是,写回缓存认为写入操作已在数据缓存后完成。随后将从缓存传输到存储系统。

现在我们来研究一下硬件缓存的操作。

硬件使用缓存来临时存储可能再次使用的数据。它的工作原理类似于内存块。虽然 Web 服务器和浏览器通常依赖基于软件的缓存,但 CPU、SSD 和 HDD 通常具有基于硬件的缓存。

缓存由一组条目组成。每个条目都包含相关数据,这些数据是备份存储中保存的精确信息的副本。每个条目还有一个标签,用于标识其是备份存储内容的副本。并发缓存定向算法可以通过标记在多个级别上运行,而不会受到差动继电器的干扰。

缓存客户端(CPU、浏览器或操作系统)在尝试从通常存储在底层存储中的位置检索数据之前,始终会先查找缓存。如果找到一个标签与所需数据匹配的条目,则使用该条目的数据。这被称为缓存命中。

例如,Web 浏览器可能会检查其本地磁盘上的缓存,以确定它是否具有特定 URL 处的网站内容的本地副本。在这种情况下,数据是网页的内容,URL 地址充当标签。缓存命中率或命中比是指缓存访问中导致缓存命中的百分比。

当检查缓存但未找到具有所需标签的内容时,这被称为缓存未命中。因此,需要更昂贵的从备份存储访问数据的操作。一旦从备份存储下载了所需数据,通常会将其存储在缓存中以供将来使用。

缓存未命中后,会删除当前缓存条目,以便为新获取的数据腾出空间。用于选择要替换的条目的启发式方法称为替换策略。“最近最少使用(LRU)”替换方法用最近最少使用的项替换最早的项。

缓存中内容的数量、延迟以及缓存和备份存储的资源使用情况都是高效缓存算法在计算使用命中频率时考虑的因素。

结论

在本文中,我们探讨了缓存的含义以及它在计算机科学中日益增长的重要性。同时,同样重要的是不要低估缓存带来的危险和风险。实现一个经过充分定义的缓存系统需要时间和技巧,因此它不是一项简单的操作。了解最重要的缓存类型对于创建理想的系统至关重要。


下一主题接触力定义