2011-05-13 54 views
3

(首先,我的英语不是很好,请)memcached中的延迟过期机制如何操作?

正如我们所知,memcached的提供懒惰到期,以及“取代”在其楼板LRU的数据,但我不是很清楚它是如何做到这一点。例如,如果一块板坯已满,但该板坯中的某些数据已过期,那么将数据添加到板坯时会发生什么情况?

  1. 是否memcached的发现一些过期的数据,并与添加的数据替换它们,或
  2. 它更换LRU数据,或
  3. 它做点别的?

据我所知,懒惰到期是这样的memcached是不是主动地从每个切片删除过期数据,但是当到期的项的关键是参考,而不是只删除过期条目。这是浪费资源,不是吗?

回答

4

当一个项目被请求时(一个获取请求),Memcached会检查 的过期时间,以确定该项目在返回 之前是否仍然有效。

同样,当向高速缓存添加新项目时,如果高速缓存已满,则在更换高速缓存中的 最少使用项目之前,它将查看过期项目以进行替换。

因此,只有在获取请求为 发送过期项目或清除过期项目时才会清除过期项目,因为需要使用 存储。

+1

如果slab满了一些过期的数据,但这些过期的数据没有请求,那么它将使用LRU mechinism替换缓存中最少使用的项目。我对吗? – 2011-05-13 10:24:19

+0

是的,你说得对 – 2011-05-13 11:34:22