当前位置: 首页 > 知识库问答 >
问题:

Datastore和Memcache一致性-Google App Engine和Objectify

仇浩旷
2023-03-14

我有一个相当棘手的问题,以确保数据存储的一致性。我们试图每隔1分钟对BigQuery(cron)进行一次同步,并依赖于Datastore来存储上一次同步完成的时间戳。

@Entity
public class Settings {

    @Parent
    private Key<ParentClass> parent = ParentClass.getKey();

    @Id
    private Long id = 123L;

    ...

    public Settings save(){
        ofy().cache(false).consistency(ReadPolicy.Consistency.STRONG).save().entity(this).now();
        return this;
    }

    public static Settings get(){
        Settings settings = ofy().cache(false).consistency(ReadPolicy.Consistency.STRONG).load().key(Key.create(ParentClass.getKey(), Settings.class, 123L)).now();
        if (settings == null) settings = create();
        return settings;
    }

    private static Settings create(){
        return new Settings().save();
    }

}

编辑:web.xml提取:

<filter>
    <filter-name>ObjectifyFilter</filter-name>
    <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>ObjectifyFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
    <filter-name>asyncCacheFilter</filter-name>
    <filter-class>com.googlecode.objectify.cache.AsyncCacheFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>asyncCacheFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

共有1个答案

郎嘉树
2023-03-14

问题是Objectify的内部会话缓存。

最初通过在第一次load()之前使用ofy().clear()手动清除缓存来解决,然后通过升级到Objectify 5.1.5进一步改进。

 类似资料:
  • 本文向大家介绍memcache一致性hash的php实现方法,包括了memcache一致性hash的php实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了memcache一致性hash的php实现方法。分享给大家供大家参考。具体如下: 最近在看一些分布式方面的文章,所以就用php实现一致性hash来练练手,以前一般用的是最原始的hash取模做 分布式,当生产过程中添加或删除一台me

  • 我正在尝试将一个基于PHP的API从共享主机移植到Google应用程序引擎。我下载了PHPSDK,在启动器中创建了一个新的应用程序,在PHP中启用了cURL。ini(使用),现在我得到这个错误: 如果我向curl_init()添加反斜杠(告诉它不要使用MyNamespace),我会得到这个: 除了启用cURL_lite()(稍后我可能会解决这个问题,因为它不支持我需要的cURL选项),我如何解决这

  • 问题内容: 如果高速缓存一致性是在硬件级别实现的,为什么我们需要可变的?任何内核/处理器都应该获得最新值吗? 还是完全解决了另一个问题? 问题答案: 高速缓存一致性可以在处理器级别实现,但是,除非处理器内存模型保证顺序一致性(在大多数现代体系结构中不是这种情况),否则只有在需要时才会获得高速缓存一致性。 这就是volatile的含义:它要求JVM生成相关的机器指令,这些指令将要求处理器将其缓存与主

  • 19.7.1. 尚未实施的GIS特性 19.7.1. 尚未实施的GIS特性 额外的元数据视图 OpenGIS规范建议了数种额外的元数据视图。例如,包含几何列的描述的名为GEOMETRY_COLUMNS的系统视图,对于数据库中的每列有1行相关内容。 作用在LineString和MultiLineString上的OpenGIS函数Length()目前应在MySQL中以GLength()的方式调用。 问

  • 问题内容: 我正在通过简单的界面在我的Rails 3应用程序中使用memcached进行一些缓存,现在我想使用redis和resque进行一些后台作业处理。 我认为它们的区别足以保证两者都使用。但是在heroku上,使用memcached和Redis需另外付费。两者都使用是否有意义,还是应该只使用Redis迁移? 我喜欢使用memcached进行缓存,因为最近最少使用的键会自动从缓存中推出,并且我

  • 我在网上找到两个定义: 顺序一致性——任何执行的结果都是相同的,就像所有处理器的操作都是按某种顺序执行的一样,每个处理器的操作按程序指定的顺序出现在这个顺序中。 最终一致性——如果没有对给定的数据项进行新的更新,最终对该项的所有访问都将返回最后更新的值。 定义对我来说很清楚。但是,当最终一致性不是顺序时,我没有得到。例如:mem 中的初始值为 0。水平轴是时间。 因此,有一些顺序,如果我们在 (x