Memcached实例 中有两种类型的数据过期 。当您将新的键值对存储到 memcached实例时,会应用第一种类型。如果合适的 slab 中没有足够的空间来存储该值,则会从缓存中删除(逐出)现有的最近最少使用 (LRU) 对象以为新项目腾出空间。
LRU 算法确保被删除的对象是不再处于活动状态的对象,或者是很久以前使用过的对象,其数据可能已过时或价值很小。然而,在分配给 memcached的内存小于缓存中所需的经常使用的对象数量的系统中,许多过期的项目可能会从缓存中删除,即使它们正在使用中。您使用统计机制来更好地了解逐出(过期对象)的级别。有关详细信息,请参阅第 16.2.4 节,“获取memcached统计信息”。
您可以通过在启动memcached-M
时设置命令行选项
来更改此逐出行为
。此选项强制在内存耗尽时返回错误,而不是自动清除旧数据。
第二种类型的过期系统是一种显式机制,您可以在将键值对插入缓存或从缓存中删除项目时设置该机制。使用过期时间是确保缓存中的数据是最新的并且符合您的应用程序需要和要求的有用方法。
显式设置到期时间的典型场景可能包括在访问网站时为用户缓存会话数据。memcached使用惰性过期机制,将已设置的显式过期时间与请求对象时的当前时间进行比较。仅返回未过期的对象。
您还可以在从缓存中显式删除对象时设置过期时间。在这种情况下,过期时间实际上是一个超时时间,表示拒绝任何为给定键设置值的尝试的时间段。