通过缓存加速重复操作

时间:2012-08-31 09:28:05

标签: java google-app-engine objectify

缓存如何与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);
        }
});

1 个答案:

答案 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在缓存更新发生之前杀死了您的进程,那么我们无能为力。