摘自Wiki关于缓存失效的内容 - "缓存失效是计算机系统中的一个过程,其中缓存中的条目被替换或删除。但是,为什么我们需要使缓存失效? 我能想到的只有可能的情况—— 如果由于某种原因缓存和数据库不同步,则缓存中的数据将过时。要同步它,我们需要使缓存失效。但是,缓存和数据库同步(除了数据尚未写入两者的短时间内)不是理想的行为。因此,如果我们发现缓存不包含正确的数据,则缓存失效将作为一种补救措施。这是它的唯一目的吗?
存在缓存失效,因为大多数缓存基于性能与容量的权衡来运行。
考虑固态驱动器与硬盘驱动器。SSD的性能会更好,但在相同的成本水平下,您可以存储的数据量会更差。通常,人们会将它们结合起来,以获得用于频繁访问的文件(例如操作系统)的 SSD 的性能,以及用于原始存储容量的 HDD 的性能。
CPU的结构类似,其中最接近 CPU 的最快,但也最小。在这种情况下,成本不一定只是货币成本,还包括物理空间、电力使用、热量产生等。
- CPU 寄存器 - 最快,非常小
- CPU 缓存(也有自己的层次结构)- 快速、小
- 内存 - 中型、大型
为了使缓存保持最佳性能,必须维护最常访问的项目,以便缓存命中与未命中比率更高。我们希望尽可能少地从较慢的来源获取。同样,由于大小限制,我们需要逐出访问频率最低的项目。
缓存失效是我们将用来决定驱逐哪些项目以及何时驱逐的策略,以便为更有可能再次需要的新项目腾出空间。如果您的缓存包含某些其他数据源的完整表示形式,则它不适用。
有很多原因。可能是最常见的一种:与需要存储的数据总量相比,缓存(通常本质上)要小得多。
换句话说:如果你只是继续在缓存中添加和添加元素,它就会成为你数据的完整副本。分别,您很快就会耗尽内存。
换句话说:缓存的本质是这样的:它的大小是有限的(以某种方式)。因此,您迟早会面临这样的决定:"我不能只是向缓存添加新元素,我必须先腾出空间"。然后你必须这样做:使缓存中的一个条目无效,以便为该"较新"条目留出空间。
鉴于OP的评论:通常使整个缓存无效类似于"重新启动"程序,或"重新安装应用程序"或"重新启动设备"。它通常被视为"通用"手段,以确保程序/应用程序重置为已知的良好状态。