Google App Engine Memcache - 滑动过期

时间:2010-04-30 00:33:37

标签: java google-app-engine memcached

是否支持GAE MemcacheService中的滑动过期?我可以做一个粗略的实现,每次get()后我都会执行put()。这将有效地重置到期时间,但这显然不是一个有效的解决方案。

关于如何更有效地实现这一点的任何指示?

谢谢, Keyur

1 个答案:

答案 0 :(得分:3)

缓存通常是LRU(最近最少使用)。如果您使用错误的机制,建议不要操纵它。

话虽如此,你的计划应该在大多数情况下再次发挥作用,但为什么呢?

根据http://code.google.com/appengine/docs/java/memcache/overview.html

缓存数据如何过期 默认情况下,存储在memcache中的值会尽可能长时间保留。如果缓存内存不足,则在将新值添加到缓存时,可以从缓存中逐出值。当由于记忆压力而驱逐值时,首先驱逐最近最少使用的值。 应用程序可以提供存储值时的到期时间,可以是相对于添加值的秒数,也可以是未来的绝对Unix纪元时间(1970年1月1日午夜的秒数)。该价值将在不迟于此时被驱逐,但可能因其他原因被驱逐。 在极少数情况下,由于内存压力以外的原因,值也可能在到期之前从缓存中消失。虽然memcache对服务器故障具有弹性,但memcache值不会保存到磁盘,因此服务故障可能导致值不可用。 通常,应用程序不应期望缓存值始终可用。