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

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

  • memcached是否找到一些过期的数据并将其替换为添加的数据或
  • 是否替换LRU数据或
  • 还有其他功能吗?

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

    最佳答案

    请求项目(获取请求)时,Memcached检查
    退货前的过期时间,以查看该商品是否仍然有效
    它给客户。

    同样,在向缓存中添加新项目时,如果缓存已满,
    它将在替换之前寻找过期物品以进行替换
    缓存中使用最少的项目。

    因此,仅当有get请求时才清除过期的项目
    已发送过期商品或过期商品已清除,因为
    需要存储。

    10-05 23:53
    查看更多