1

缓存如何与 App Engine 配合使用?只需添加@Cached注释就足够了:

@Cached
public class MyEntity {
    @Id Long id;
    ...
}

但是,来自 Objectify 文档:

“在 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);
        }
});
4

1 回答 1

1

Objectify 尽其所能使其全局缓存支持尽可能事务性:

3.1 中的缓存已从头开始重写,以提供与数据存储的近事务一致性。

例如,如果您的请求或任务在截止日期限制下运行,则有可能写入数据存储但不会更新缓存

缓存是近乎事务性的。在正常操作下,缓存不会与数据存储不同步,即使是在激烈争用的情况下。例外情况是 DeadlineExceededException 在 30s(任务 10m)硬期限。如果 Google 在缓存更新发生之前终止了您的进程,我们将无能为力。

于 2012-09-04T19:00:21.260 回答