在GAE上回写Memcache的策略

时间:2013-06-19 19:23:13

标签: java google-app-engine caching google-cloud-datastore

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

当然我正在考虑使用Memcache。理想情况下,数据应始终存在于内存中,以便我可以经常读取和更新数据。如果缓存已满或正在关闭VM(我最关心的问题),它应该只写入数据存储。我是否可以实现某种write-back strategy,其中缓存仅在需要时写入存储?

特别是我的两个问题是:

  1. 如何知道从缓存中删除某个项目的时间?
  2. 我如何知道VM何时关闭,以便我可以保留缓存的内容?

1 个答案:

答案 0 :(得分:2)

简短回答:不。

更长的答案:Memcache不提供保证。

有用的答案:看https://developers.google.com/appengine/articles/scaling/memcache#transient。如果丢失数据是一个选项,你可以依赖memcache(但有时候某些东西可能会丢失)。

不要担心VM会被关闭:Memcache在实例VM之外运行,并在所有应用程序实例VM之间共享。