我的 App Engine (Java) 应用程序计划处理需要频繁更新许多项目的数据结构。数据量计划不超过 1000 条记录(每个客户端),但客户端数量是无限的,因此我不愿意每秒进行 1000 次读取和 1000 次写入,只是为了更新一些计数器。
我自然会考虑使用 Memcache。理想情况下,数据应该始终位于内存中,以便我可以经常读取和更新它。仅当缓存已满或虚拟机正在关闭时(我最关心的问题),才应将其写入数据存储。我可以实现某种 write-back strategy缓存仅在需要时才写入存储?
特别是我的两个问题是:
- 我如何知道某个项目何时从缓存中删除?
- 我如何知道虚拟机何时关闭,以便保留缓存的内容?
最佳答案
简短回答:否。
更长的答案:Memcache 不提供任何保证。
有用的答案:看看https://developers.google.com/appengine/articles/scaling/memcache#transient 。如果可以选择丢失数据,您可以依靠 memcache(但有时可能会丢失一些数据)。
不过,不必担心 VM 被关闭:Memcache 在实例 VM 外部运行,并在所有应用实例 VM 之间共享。
关于java - GAE 上 Memcache 的写回策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17199610/