这种类型的缓存方案有名称吗?

Posted

技术标签:

【中文标题】这种类型的缓存方案有名称吗?【英文标题】:Does this type of caching scheme have a name? 【发布时间】:2011-02-16 13:32:20 【问题描述】:

考虑基本的缓存方法:您在缓存中查找一个键,如果它不存在,您就从主持久存储中获取它。如果缓存已满其他值或 TTL 通过,则该值过期。

现在,考虑一个稍微替代版本的缓存:你查找一个键,如果它不在那里,你必须得到它,这里没有什么新东西。但是,如果您查找一个键并且该值由于 TTL 已过期,而是返回该陈旧值,并异步更新该值,以便下一个请求已经看到一个新值(并且 TTL 分别重置),该怎么办?

这个缓存方案有名字吗?它有什么我们遗漏的缺点吗?

【问题讨论】:

它是具有某种延长生命周期/提前刷新的 LRU。 (不是在 TTL 达到 0 时更新值,而是将问题视为输入 TTL+x 的条目,并在 TTL 达到 x 时更新,然后最终消失为 0。) 【参考方案1】:

我不知道它的名字,但我们确实使用了一种方案,其中数据最多缓存 N 分钟,但在 N/2 分钟后,会在后台生成一个线程来更新数据。

如果: A)计算成本很高,并且 B) 你绝对不能等待新的计算。

如果: A) 您在任何时候都需要完全最新的信息。 B) 计算非常少见。在这种情况下,您的数据可能会过期数小时。

【讨论】:

以上是关于这种类型的缓存方案有名称吗?的主要内容,如果未能解决你的问题,请参考以下文章

不同风格的递归,引用/全局/指针变量的使用

redis常见问题

访问 Snowflake 中的结果缓存会消耗计算积分吗?

缓存数据的最佳方式

缓存的网络图像在调试模式下工作正常,但在发布模式下显示占位符抖动,请问有啥解决方案吗?

如何检测 XHR 何时返回缓存的资源?