2010-04-30 72 views
2

是否支持GAE MemcacheService中的滑動到期?我可以做一個粗略的實現,其中每個get()我做一個put()。這將有效地重置到期時間,但這顯然不是有效的解決方案。Google App Engine Memcache - 滑動到期

任何關於如何更有效地實現這一點的指針?

感謝, Keyur

+0

我根據MemCache的文檔擴展了我的答案。 – 2010-04-30 20:25:40

回答

3

高速緩存通常是LRU(最近最少使用)。不建議操縱這一點,如果你是可能使用錯誤的機制。

這就是說,你的方案應該再次在大多數情況下工作,但爲什麼?

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

緩存的數據如何過期 默認情況下,存儲在內存緩存值儘可能長時間保留。如果高速緩存的內存不足,則可能會在將新值添加到高速緩存時從高速緩存中清除值。當價值因內存壓力而被驅逐時,最近最少使用的價值首先被驅逐。 當存儲值時,應用程序可以提供到期時間,例如相對於添加值的秒數,或者作爲將來的絕對Unix紀元時間(從1970年1月1日午夜開始的秒數) 。價值將在不遲於此時被驅逐,儘管它可能因其他原因被驅逐。 在極少數情況下,由於存儲器壓力以外的原因,值可能也會在到期之前從緩存中消失。雖然memcache對服務器故障具有適應性,但memcache值不會保存到磁盤,因此服務失敗可能導致值不可用。 通常,應用程序不應期望緩存的值始終可用。

+0

如果GAE memcache確實是LRU,那麼我是黃金。有沒有關於它的任何文檔是LRU? – Keyur 2010-04-30 16:42:02