2

上下文:使用 Memcached。(使用 Google App Engine 和 Objectify,但这无关紧要)

我将创建一个简单的示例,一个包含两个实体 Player 和 Game 的游戏。用户通常可以查询单个请求打开的游戏甚至是玩家资料。可能有开放的 100 场比赛或 3000000 场比赛。

(1)对所有实体使用缓存是个好主意吗?如果我有未使用的 RAM,为什么不将其用于游戏或播放器?这有不好的情况吗?(除了几乎没有时间缓存访问数据)

(2)另外一个问题是,在加载对象的时候,是不是应该分区优化存储的对象呢?并缓存?例如:

player {
  email
  pass

  punctuation          // This data will change quite frequently
  numGamesClosed       // This data will change quite frequently
}

可能更好:

 @Entity     //DataStore entity
 player {
    email
    pass
 }

 @Cache     //The entity will be cached into Memchached
 @Entity    //DataStore entity
 DatosJugador
 {
    @Parent Key <Player> owner;
    punctuation
    numGamesClosed      
 }

非常感谢

4

1 回答 1

3

memcache 使用的“ram”不是来自您的应用程序,而是来自共享的 GAE 通用的 memcached 内存池。您的应用程序的所有实例“看到”相同的内存缓存。

您放入内存缓存的内容不计入您的应用程序内存使用量。

然而,memcache 的内容可以随时被驱逐,恕不另行通知。所以真的没有理由(除了你可以放入memcache的对象大小的上限)不缓存所有内容,只要你可以回退到数据存储区,如果它在你请求的时候不在缓存中.

于 2012-12-10T12:25:55.797 回答