当前位置:  开发笔记 > 编程语言 > 正文

在谷歌应用引擎中使用memcache

如何解决《在谷歌应用引擎中使用memcache》经验,为你挑选了1个好方法。

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

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

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

我需要社区建议.

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

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

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

    100个用户访问相同的应用程序页面.

    它们提供了一个唯一的识别标记和另外3个参数(比方说p1,p2和p3).

    我的servlet收到请求.

    应用程序通过令牌获取用户表,并检查启用状态.

    应用程序获取另一个表(例如department)并检查p1是否存在.如果存在则检查启用状态.

    如果以上返回true,则根据参数p2查询服务表,以检查是否为此用户启用了此服务,并检查Service EndDate.

    根据p3长度,检查另一个表的可用性.

Nick Johnson.. 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

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



1> Nick Johnson..:

你不应该考虑将表插入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

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

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有