memcached中的延迟到期机制如何运作?

时间:2011-05-13 03:07:52

标签: memcached lru

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

我们知道,memcached提供了懒惰的过期,并且“替换”了它的slab中的LRU数据,但是我不太清楚它是如何做到的。例如,如果slab已满,但此slab中的某些数据已过期,那么将数据添加到slab时会发生什么?

  1. memcached是否找到了一些过期数据并将其替换为添加的数据,或
  2. 是否取代LRU数据,或
  3. 它还能做些什么吗?
  4. 据我所知,延迟过期是指memcached没有主动从每个slab中删除过期数据,而只是在引用过期条目的密钥时删除过期条目。这是浪费资源,不是吗?

1 个答案:

答案 0 :(得分:4)

请求项目时(获取请求)Memcached检查 返回之前查看项目是否仍然有效的到期时间 它给客户。

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

所以过期的项目仅在获取请求时被清除 发送过期项目或过期项目被清除,因为 需要存储。