(首先,我的英语不是很好)
众所周知,memcached提供了延迟过期,并在其slab中“替换”了LRU数据,但是我不清楚它是如何做到的。例如,如果一个slab已满,但是该slab中的某些数据已过期,那么将数据添加到slab会发生什么?
据我所知,延迟过期使得memcached不会主动从每个slab删除过期的数据,而是仅在引用过期条目的键时才删除过期条目。这是浪费资源,不是吗?
最佳答案
请求项目(获取请求)时,Memcached检查
退货前的过期时间,以查看该商品是否仍然有效
它给客户。
同样,在向缓存中添加新项目时,如果缓存已满,
它将在替换之前寻找过期物品以进行替换
缓存中使用最少的项目。
因此,仅当有get请求时才清除过期的项目
已发送过期商品或过期商品已清除,因为
需要存储。