介绍
有多少人听到“高速缓存无效是计算机科学中最棘手的问题?”我首先在工程计算机架构类中介绍了“缓存”一词。当我第一次学习时,我不了解这个概念。我花了几年时间才完全理解了这个概念。在这篇博客文章中,我们将研究缓存和不同策略的基础知识。
基本
什么是缓存?缓存是将数据存储在快速和辅助存储中的机制。缓存的主要目标是减少响应时间并提高速度。基本概念很简单,主要存储提供了永久存储数据的持久性和耐用性。但是,它们很慢。我们需要快速但暂时的辅助存储。这就是公羊的设计。它们很快,但是存储在其中的数据是暂时的。我们还称RAM中内存。让我们尝试使用以下图理解机制。
上图是不明智的。我们首先检查缓存,因为它很快,如果找不到的话,请将其从主存储中获取并将其写回缓存。
缓存是在不同用例中实现的。其中一些是
-
磁盘页面缓存:硬盘是圆柱结构,分为扇区,轨道和页面。页面是内存的连续块。每次访问硬盘都需要I/O高架和CPU上下文切换。为了优化这一点,UNIX操作系统缓存了主内存中的页面。
-
Web服务器缓存:像Nginx这样的Web服务器缓存经常访问的页面以提高速度和响应性。他们只需将整个HTML内容存储在主内存中,然后从那里服务。
-
应用程序级别缓存:诸如Web浏览器,代码编辑器和您的后端Web APIS CACH等应用程序中的结果。
缓存驱逐政策
我们的RAM的容量有一定固定尺寸。因此,当它达到其大小时,它需要省略一些数据。这个过程称为驱逐。以下是使用不同的驱逐技术。
最近使用的最少
顾名思义,删除最少使用的条目。双重链接的列表结构通常用于实现此机制。数据以访问的排序顺序存储,该访问的最新使用时,最少使用的访问顺序。每次访问缓存键时,都会放在前面。
最少使用
将保持每个缓存键的频率计数。每次访问键时,频率计数都会更新。每当缓存达到其大小时,就会删除较小的项目。
缓存模式
有不同的缓存模式。我们将看一下它们。
旁边缓存
这是最常见的模式。我们已经在上面的流程图中讨论了这一点。我们将首先检查缓存,如果找不到,请从数据库中读取并再次写入缓存。
通读
在通过模式的缓存中,应用程序服务器向缓存询问数据,如果缓存失误,缓存本身从数据库中获取并保存在缓存中。为了实现此模式,缓存软件应具有与数据库技术集成的库。很少有缓存软件实现此模式。一个例子是AWS DAX which integrates with DynamoDB。
写在后面
在这种模式下,写入缓存的写入通过消息队列异步发生。这种模式的优点是延迟减小,因为对缓存的写入并非同步发生。但是,这种模式的缺点是,如果将数据写入缓存的滞后,请缓存误差会增加。