caching - 当键具有不同的时间范围并且缓存已满时,memcached 过期行为是什么?

标签 caching memcached cache-control

我知道redis会自行使键过期,释放内存 并想知道 memcached 是否会有相同的行为。

<小时/>

假设我有一种很少过期的缓存键 (我们称之为 A),另一种每 5 分钟过期, 使用 Ruby on Rails 的 expires_in: 5.mines (我们将其称为 B)

如果 B 键太多,memcached 会删除 A 键吗?

例如,如果我可以在商店中存储 5 个值,则场景可能是:

  • 存储 A1(剩余 4 个值)
  • 存储 B1(还剩 3 个值)
  • 存储 B2(还剩 2 个值)
  • 存储 B3(还剩 1 个值)
  • 存储 B4(剩余 0 个值)

此时B1、B2、B3已经过期了(因为它们的生命周期是这样的) 短)。

<小时/>

如果我在缓存中存储另一个元素会发生什么?会不会掉A1 因为它是最旧的,或者它会知道 B 键的生命周期很短并且 首先使用它们在内存中的位置?

最佳答案

Memcached 使用 LRU(最近最少使用)机制来确定当要存​​储的对象数量多于可用空间时哪些现有对象将过期。您可以进一步引用以下链接了解其 key 过期机制: http://docs.oracle.com/cd/E17952_01/refman-5.6-en/ha-memcached-using-expiry.html

关于caching - 当键具有不同的时间范围并且缓存已满时,memcached 过期行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22500824/

相关文章:

memcached - LAMP 服务器上有 Memcache、APC 和 Varnish 好吗?

http - http请求中的`cache-control: max-age=0`

http - 缓存控制 header 中多个值的含义

caching - Jenkins 禁用或清除 Maven 构建的缓存

php - 拉维尔/流明 : Could not establish Memcached connection

Python程序第一次执行时间太长?

caching - Varnish 和 ESI : Fetching in parallel and possible workarounds

php 和 mysql - 避免缓存

javascript - 防止浏览器缓存 JavaScript 文件的更好方法

node.js - 如何在 express 中的子目录上设置缓存 header