Tag: cache expiration

AppEngine Memcache过期策略

我期待以下AppEngine代码: MemcacheService memcache = MemcacheServiceFactory.getMemcacheService(); memcache.put(“Foo”, “Bar”, Expiration.onDate(new Date(1))); System.out.println(memcache.get(“Foo”)); System.out.println(memcache.put(“Foo”, “Baz”, null, SetPolicy.ADD_ONLY_IF_NOT_PRESENT)); 产生以下输出: null true 即,通过在1970年将条目放入缓存时设置过期日期,我预计它会立即被删除并可供重用。 相反,我得到: Bar false 即进入仍然存在。 现在,奇怪的是,如果我将我的代码更改为Expiration.onDate(new Date()) (没有1 ),即在执行put操作之前将expiration设置为右,我确实得到了预期的“null,true”。 Memcache是​​否以某种方式解释了过去相对于现在而不是绝对的过期日期? 但是,即使这样也不符合结果,因为距离看跌期权的1ms在到期时仍应该到期?!? 我可以将Expiration设置为什么值,以保证put条目的立即到期(和删除!)? 请记住,简单地使用当前时间戳可能无法可靠地工作,因为AppEngine不提供跨服务器的任何时钟同步保证! 我知道想要做到这一点听起来毫无意义乍一看(为什么不删除呢?),但我想在这里使用它: AppEngine Memcacheprimefaces获取和删除 (句子在“结论”上方)。