GAE 内存缓存与请求会话

GAE memcache vs request session

我在 GAE 上部署了一个店面应用程序,允许用户查看他们的订单历史记录。我试图决定是使用内存缓存缓存数据,还是只将数据存储在用户会话中,而不是每次他们请求新的 page/set 订单时都访问数据存储。谁能推荐一个或另一个?如果我使用内存缓存,我可能会使用用户 ID 和硬编码字符串的组合作为内存缓存条目的键。

GAE 会话由 Memcache 和数据存储支持:

App Engine includes an implementation of sessions, using the servlet session interface. The implementation stores session data in the App Engine datastore for persistence, and also uses memcache for speed. (documentation)

由于您无论如何都需要将订单数据存储在 Datastore 中,因此使用会话将导致相同数据保存两次。所以我建议使用 Memcache。

使用 Objectify 或其他将为您处理所有缓存的智能框架,只需将所有内容存储在数据存储中。

最重要的是,您可以通过创建实体的键来寻址实体,并且您不必对数据存储执行任何查询,因为这样缓存将不起作用。如果您可以根据 userId 为 memcache 编写一个键,那么您也可以为数据存储执行此操作。