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
Java 将属性写入memcache,但不写入Objectify中的数据存储?_Java_Google App Engine_Caching_Objectify - Fatal编程技术网

Java 将属性写入memcache,但不写入Objectify中的数据存储?

Java 将属性写入memcache,但不写入Objectify中的数据存储?,java,google-app-engine,caching,objectify,Java,Google App Engine,Caching,Objectify,在Objectify中,我可以用@Cache注释一个实体,将其写入memcache。如果我想忽略写入数据存储的某些属性,我可以用@ignore注释它们 我要寻找的是一种在memcache中存储属性的方法,而不是在数据存储中 我想把这个和.save(onlyCache)结合起来。{仅限伪代码} 换句话说,我希望能够拥有属性,这些属性只能持久化到memcache,而不能持久化到数据存储。如果从memcache中检索实体,我将填充这些属性,否则它们为空 同时,我希望能够将实体只保存到memcach

在Objectify中,我可以用@Cache注释一个实体,将其写入memcache。如果我想忽略写入数据存储的某些属性,我可以用@ignore注释它们

  • 我要寻找的是一种在memcache中存储属性的方法,而不是在数据存储中
  • 我想把这个和.save(onlyCache)结合起来。{仅限伪代码}
换句话说,我希望能够拥有属性,这些属性只能持久化到memcache,而不能持久化到数据存储。如果从memcache中检索实体,我将填充这些属性,否则它们为空

同时,我希望能够将实体只保存到memcache,而不保存到数据存储

为什么这有意义?有时我有一些属性,我只需要在用户在线时使用,如果这些属性不存在的话,这些属性在哪里并不重要。例如,假设我有一个用户实体,它不经常写入,但经常读取(例如,社交网络中朋友的状态),我想跟踪每个用户的状态,其中,每次用户在我的应用程序中导航时,状态值都会改变。如果能够将用户存储到memcache中,并且已经附加了当前状态指示器,那就太好了,因此当检索到该用户时,客户端将接收到该实体及其持久化值以及任何可用的缓存信息。如果我可以控制.save(onlyCache)来告诉Objectify我是否只想将实体保存到memcache或一直保存到数据存储,那么我可以微调我想看到的内容和不想看到的内容


在Objectify中是否存在类似的内容和/或是否可行?这种方法有什么缺点吗?

未持久化到数据库的属性可能不属于该实体。可以分别使用MemcacheService()将您提到的运行时属性保存到memcache。这不会使代码变得混乱(注释、@Ingore、@CacheOnly等太多),并保持模式干净。

这是正确的答案。Objectify是一个持久化API。如果你想在缓存方面有古怪的业务逻辑,你应该在Objectify的上面而不是下面分层。我同意你的观点,但我想提出这一点,因为当Objectify与云端点结合使用时,分层并不干净,因为实体在一端用于持久性,在另一端用于传输REST。因此,我们已经在代码中为两种不同的东西添加了注释,在这一点上,为缓存同一实体添加更多注释可能是有意义的。但我同意,这种带有大量注释的代码很难阅读。