Java GAE上Memcache的写回策略

Java GAE上Memcache的写回策略,java,google-app-engine,caching,google-cloud-datastore,Java,Google App Engine,Caching,Google Cloud Datastore,My App Engine(Java)应用程序计划在需要频繁更新许多项的数据结构上运行。数据量不计划超过1000条记录(每个客户端),但客户端的数量是无限的,因此我不愿意为了更新一些计数器而每秒进行1000次读取和1000次写入 当然,我在考虑使用Memcache。理想情况下,数据应该一直在内存中,这样我就可以经常读取和更新它。只有当缓存已满或VM正在关闭时(我最担心的问题),才应该将其写入数据存储。我能否实现某种缓存只在需要时写入存储器的方式 特别是我的两个问题是: 如何知道项目何时从缓存中删

My App Engine(Java)应用程序计划在需要频繁更新许多项的数据结构上运行。数据量不计划超过1000条记录(每个客户端),但客户端的数量是无限的,因此我不愿意为了更新一些计数器而每秒进行1000次读取和1000次写入

当然,我在考虑使用Memcache。理想情况下,数据应该一直在内存中,这样我就可以经常读取和更新它。只有当缓存已满或VM正在关闭时(我最担心的问题),才应该将其写入数据存储。我能否实现某种缓存只在需要时写入存储器的方式

特别是我的两个问题是:

  • 如何知道项目何时从缓存中删除
  • 我如何知道VM何时关闭,以便能够持久化缓存的内容
  • 简短回答:没有

    更详细的回答:Memcache不提供任何保证

    有用的答案:看看。如果可以选择丢失数据,您可以依赖memcache(但有时有些东西可能会丢失)


    不过,不要担心虚拟机被关闭:Memcache在实例虚拟机之外运行,并在所有应用实例虚拟机之间共享。

    感谢您的回答。如果Memcache在VM之外运行,我是否可以在缓存中放置一个条目,即使实例没有启动一次,它明天仍然会在那里?是的,但没有保证:它可能第二天就不在那里。这是一个很大的“不保证”设计应用程序,使其能够在几分钟内处理memcache中丢失的数据。也就是说,如果你不介意在某段时间丢失一些数据,那么向memcache写入数据并希望稍后将其发送到数据存储,这样才能起作用。哦,不会有人告诉你它已经消失了,它只是不在那里。这是一个缓存。