在谷歌应用引擎中使用memcache

Man*_*oor 4 java google-app-engine memcached

我使用GAE创建了一个应用程序.我期待每天100k的请求.目前,每个请求应用程序需要在执行所需任务之前查找4个表和8个diff列.

这4个表是我的主表,有5k,500,200和30个记录.它低于1 MB(限制).

现在我想将我的主记录放在memcache中以便更快地访问并减少RPC调用.当任何用户更新master时,我将替换memcache对象.

我需要社区建议.

改变当前的设计是否可以?

如何在memcache中放入4个主表数据?

这是应用程序当前的工作方式

  1. 100个用户访问相同的应用程序页面.
  2. 它们提供了一个唯一的识别标记和另外3个参数(比方说p1,p2和p3).
  3. 我的servlet收到请求.
  4. 应用程序通过令牌获取用户表,并检查启用状态.
  5. 应用程序获取另一个表(例如department)并检查p1是否存在.如果存在则检查启用状态.
  6. 如果以上返回true,则根据参数p2查询服务表,以检查是否为此用户启用了此服务,并检查Service EndDate.
  7. 根据p3长度,检查另一个表的可用性.

Nic*_*son 6

你不应该考虑将表插入memcache.相反,使用"乐观缓存"策略:每当您需要执行要缓存的操作时,首先尝试在memcache中查找它,如果失败,则从数据存储区中获取它,然后存储在memcache中.这是一个例子:

def cached_get(key):
  entity = memcache.get(str(key))
  if not entity:
    entity = db.get(key)
    memcache.set(str(key), entity)
  return entity
Run Code Online (Sandbox Code Playgroud)

但请注意,缓存单个实体的回报相当低 - 数据存储区在执行提取时相当快.缓存查询结果或呈现的页面将提供更好的速度提升.