我使用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
但请注意,缓存单个实体的回报相当低 - 数据存储区在执行提取时相当快.缓存查询结果或呈现的页面将提供更好的速度提升.
你不应该考虑将表插入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
但请注意,缓存单个实体的回报相当低 - 数据存储区在执行提取时相当快.缓存查询结果或呈现的页面将提供更好的速度提升.