(首先,我的英语不是很好,请)
我们知道,memcached提供了懒惰的过期,并且“替换”了它的slab中的LRU数据,但是我不太清楚它是如何做到的。例如,如果slab已满,但此slab中的某些数据已过期,那么将数据添加到slab时会发生什么?
据我所知,延迟过期是指memcached没有主动从每个slab中删除过期数据,而只是在引用过期条目的密钥时删除过期条目。这是浪费资源,不是吗?
答案 0 :(得分:4)
请求项目时(获取请求)Memcached检查 返回之前查看项目是否仍然有效的到期时间 它给客户。
类似地,当向缓存添加新项目时,如果缓存已满, 它将在替换之前查看要替换的过期项目 缓存中使用最少的项目。
所以过期的项目仅在获取请求时被清除 发送过期项目或过期项目被清除,因为 需要存储。