2

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

自然地,我正在考虑使用 Memcache。理想情况下,数据应该一直在内存中,这样我就可以经常阅读和更新它。仅当缓存已满或 VM 正在关闭(我最关心的问题)时,才应将其写入数据存储。我可以实施某种回写策略,仅在需要时将缓存写入存储吗?

特别是我的两个问题是:

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

1 回答 1

2

简短的回答:没有。

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

有用的答案:查看https://developers.google.com/appengine/articles/scaling/memcache#transient。如果可以选择丢失数据,则可以依赖 memcache(但有时可能会丢失某些内容)。

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

于 2013-06-19T20:04:14.607 回答