我们什么时候执行缓存失效?

问题描述 投票:1回答:2

来自Wiki的关于缓存失效的摘录 - “缓存失效是计算机系统中的一个过程,其中缓存中的条目被替换或移除。”但是,为什么我们需要使Cache无效?我只能想到可能的情况 - 如果由于某种原因缓存和数据库不同步,缓存中的数据将是陈旧的。要同步它,我们需要使缓存无效。但是,缓存和数据库同步(除了数据尚未写入两者的短时间内)不是理想的行为。因此,如果我们发现缓存不包含正确的数据,则缓存失效可以作为补救措施。这是它的唯一目的吗?

caching cache-invalidation
2个回答
1
投票

存在高速缓存失效,因为大多数高速缓存基于性能与容量的权衡而运行。

考虑固态驱动器与硬盘驱动器。 SSD的性能会更好,但是在相同的成本水平下,您可以存储的数据量会更差。通常人们会将它们结合起来,以获得经常访问的文件(例如操作系统)的SSD性能,以及用于原始存储容量的HDD。

CPU的结构类似,最接近CPU的是最快但也最小的。在这种情况下的成本不一定只是货币成本,而是物理空间,用电量,发热量等。

  1. CPU寄存器 - 最快,非常小
  2. CPU缓存(也有自己的层次结构) - 快速,小巧
  3. RAM - 中等,大

为了使缓存保持最佳状态,必须维护最常访问的项目,以便有更好的缓存命中率与未命中率。我们希望尽可能不频繁地从较慢的来源获取。同样,由于大小限制,我们需要驱逐最不频繁访问的项目。

缓存失效是我们将使用的策略,以便决定哪些项目被驱逐以及何时被驱逐,以便为更有可能再次需要的新项目腾出空间。如果您的缓存包含某些其他数据源的完整表示,则不适用。


0
投票

有很多原因。可能是最常见的一种:与需要存储的数据总量相比,缓存(通常本质上)要小得多。

换句话说:如果您只是在缓存中添加和添加元素,它就会成为您数据的完整副本。你的内存很快就会耗尽。

换句话说:缓存的本质是:它的大小有限(某种程度上)。因此,迟早你会面临这样的决定:“我不能只在缓存中添加新元素,我必须先腾出空间”。然后你必须做到这一点:使缓存中的一个条目无效,以便有“更新”条目的空间。

并且鉴于OP的评论:经常使整个缓存失效类似于“重启”您的程序,或“重新安装您的应用程序”,或“重启您的设备”。它通常被视为“通用”意味着确保程序/应用程序重置为已知良好状态。

© www.soinside.com 2019 - 2024. All rights reserved.