【问题标题】:Speed up repeated operation via Caching通过缓存加速重复操作
【发布时间】:2012-08-31 09:28:05
【问题描述】:

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

【问题讨论】:

    标签: java google-app-engine objectify


    【解决方案1】:

    Objectify 尽其所能使其全局缓存支持as transactional as possible

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

    例如,如果您的请求或任务正好赶上截止日期,a write could make it to the datastore but not update the cache:

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

    【讨论】:

    • 所以问题出在谷歌的超时,也许这可以通过使用AppScale来解决?
    猜你喜欢
    • 2020-10-24
    • 2015-06-16
    • 2019-12-26
    • 2010-09-17
    • 2020-12-19
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多