GAE MemcacheService 是否支持滑动过期?我可以做一个粗略的实现,在每个 get() 之后我执行一个 put()。这将有效地重置过期时间,但这显然不是一个有效的解决方案。
关于如何更有效地实现这一点有什么建议吗?
谢谢, 基尔
最佳答案
缓存通常是 LRU(最近最少使用)。不建议对此进行操作,如果这样做,您可能使用了错误的机制。
话虽这么说,你的方案在大多数情况下都应该有效,但为什么呢?
根据 http://code.google.com/appengine/docs/java/memcache/overview.html
缓存数据如何过期 默认情况下,存储在内存缓存中的值会尽可能长时间地保留。如果缓存内存不足,则当将新值添加到缓存时,可能会从缓存中逐出值。当值由于内存压力而被逐出时,最近最少使用的值将首先被逐出。 应用程序可以在存储值时提供过期时间,可以是相对于添加值时的秒数,也可以是 future 的绝对 Unix 纪元时间(从 1970 年 1 月 1 日午夜开始的秒数)。该值将在此时被驱逐,尽管它可能会因其他原因被驱逐。 在极少数情况下,由于内存压力以外的原因,值也可能在过期之前从缓存中消失。虽然 memcache 对服务器故障具有弹性,但 memcache 值不会保存到磁盘,因此服务故障可能会导致值不可用。 一般来说,应用程序不应期望缓存值始终可用。
关于java - Google App Engine Memcache - 滑动过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2741629/