3

(首先,我的英语不是很好,拜托)

众所周知,memcached 提供延迟过期,并“替换”其平板中的 LRU 数据,但我不太清楚它是如何做到的。比如一个slab已经满了,但是这个slab里面的一些数据已经过期了,那么在slab中添加数据会发生什么?

  1. memcached 是否找到一些过期数据并用添加的数据替换它们,或者
  2. 它是否替换了 LRU 数据,或者
  3. 它还有其他作用吗?

据我所知,延迟过期是这样的,memcached 不会主动从每个slab 中删除过期数据,而是仅在引用过期条目的键时删除过期条目。这很浪费资源,不是吗?

4

1 回答 1

5

当一个项目被请求(一个获取请求)时,Memcached 会检查过期时间以查看该项目是否仍然有效,然后再将其返回给客户端。

类似地,当向缓存中添加新项目时,如果缓存已满,它会在替换缓存中最少使用的项目之前查找要替换的过期项目。

因此,仅当为过期项目发送获取请求或清除过期项目(因为需要存储)时才会清除过期项目。

于 2011-05-13T03:50:52.513 回答