【问题标题】:Memcached LRU and expiryMemcached LRU 和到期
【发布时间】:2011-02-10 20:29:40
【问题描述】:

如果 memcached 中的某项设置为永不过期,它是否免于 LRU eviction?

我看到的文档并没有清楚地描绘出哪个优先。在我看来,让 LRU 仅适用于过期 > 0 的项目是理想的(可能在内部非常复杂)。

【问题讨论】:

    标签: memcached


    【解决方案1】:

    不,它不是豁免的。 Memcached 是缓存,不是持久存储。其中的任何项目,或整个缓存本身都可能随时消失(但除非已满或出现重大问题,否则不太可能)。

    在沉重的内存压力下,LRU 算法会删除它认为必要的任何内容。

    什么是memcached的缓存?

    缓存结构是一个 LRU(最近最少使用),加上过期超时。当您将项目存储到 memcached 中时,您可能会说明它应该在缓存中有效多长时间。这是永远的,还是未来的某个时间。如果服务器内存不足,则首先替换过期的slab,然后再替换最旧的未使用的slab。

    如果系统没有过期数据区域,它将丢弃最近最少使用的内存块(slab)。

    【讨论】:

    • 请注意,我意识到 memcached 不是持久化的,但还有其他缓存解决方案可以免除 LRU 或 LFU 驱逐的条目。
    【解决方案2】:

    doc 表示当expirezero_does_not_evict 设置为 'true' 时,exptime 为 0 的项目无法驱逐。

    【讨论】:

      猜你喜欢
      • 2022-09-29
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 2023-04-01
      • 2011-06-17
      相关资源
      最近更新 更多