缓存如何与App Engine配合使用?仅添加@Cached
注释就足够了:
@Cached
public class MyEntity {
@Id Long id;
...
}
然而,来自Objectify docs:
“在v3.1之前,Objectify的全局缓存支持遭遇争用中的同步问题。不要将它用于需要事务完整性的实体,强烈建议您将有效期限应用于所有缓存值。“
这是否意味着如果我有一个代码,下面有这个表格我不应该使用它?
DAOT.repeatInTransaction(new Transactable() {
@Override
public void run(DAOT daot)
{
Counter count = daot.ofy().find(Counter.class, COUNTER_ID);
count.increment();
daot.ofy().put(count);
}
});
答案 0 :(得分:1)
Objectify努力尽力使其全局缓存支持as transactional as possible:
3.1中的缓存已从头开始重写,以提供与数据存储的近事务一致性。
例如,如果您的请求或任务在截止期限内运行,则可能a write could make it to the datastore but not update the cache:
缓存接近事务性。在正常操作下,即使在极大的争用下,缓存也不会与数据存储区不同步。 例外情况是30秒(任务10米)硬截止日期的DeadlineExceededException。如果Google在缓存更新发生之前杀死了您的进程,那么我们无能为力。