Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 更新外观完全不可靠_Google App Engine_Objectify - Fatal编程技术网

Google app engine 更新外观完全不可靠

Google app engine 更新外观完全不可靠,google-app-engine,objectify,Google App Engine,Objectify,我尝试更新appengine实体,只是用一个较新的值覆盖它。它在data store viewer中正确显示,但当我尝试在我的应用程序中检索它时,它有时给出较旧的值,有时给出较新的值。 我正在使用Objectify @ApiMethod(name = "saveUser") public void saveUser(User user) { ofy().save().entity(user).now(); } @ApiMethod(name = "getUse

我尝试更新appengine实体,只是用一个较新的值覆盖它。它在data store viewer中正确显示,但当我尝试在我的应用程序中检索它时,它有时给出较旧的值,有时给出较新的值。 我正在使用Objectify

@ApiMethod(name = "saveUser")
    public void saveUser(User user) {

        ofy().save().entity(user).now();
    }

@ApiMethod(name = "getUser")
    public User getUser(@Named("gdgId") Long id) {

        return ofy().load().type(User.class).id(id).now();
    }
因此,当我想插入/更新用户时,我调用saveuser,并调用getUser来检索与id关联的用户对象。
我没有使用Objectify文档中的缓存(@Cache annotation)

每个Objectify实例都保存一个缓存,缓存中包含已删除的实体 在该会话中加载。这样可以防止该范围内的后续加载 会话不需要转到数据存储。缓存可以保存 实体实例和(交易除外)将 始终返回相同的实际对象实例

此缓存与启用/禁用全局memcache的 @Cache注释和Objectify.Cache()参数


请注意,忽略@Cache注释不会禁用此缓存行为

确保应用程序中安装了
ObjectifyFilter
。我认为这看起来像是最终的一致性,但您正在执行一个get by key操作,这将是非常一致的。因此,它看起来像是由于缺少筛选器而导致会话缓存溢出。

ofy().clear():清除会话;所有后续请求(或Ref.get()调用)都将转到数据存储/memcache以重新填充会话。如果有必要的话,这应该很少发生。请注意,如果迭代查询结果,则只应在块边界上执行此操作,否则性能将受到影响。这是一个“只有当你真正知道你在做什么时才使用”的特性。每次我保存用户时调用此函数是一个好主意吗?我认为保存后删除缓存应该可以完成这项工作?这应该是不必要的。尝试使用密钥加载您的用户。您可能会面临另一个问题—数据存储中的最终一致性。