Python 有没有办法缓存提取输出?
我正在一个在云中运行的封闭系统上工作 我需要的是一个搜索函数,它使用在regexp中键入的用户来过滤数据集中的行Python 有没有办法缓存提取输出?,python,google-app-engine,datastore,Python,Google App Engine,Datastore,我正在一个在云中运行的封闭系统上工作 我需要的是一个搜索函数,它使用在regexp中键入的用户来过滤数据集中的行 phrase = re.compile(request.get("query")) data = Entry.all().fetch(50000) #this takes around 10s when there are 6000 records result = x for x in data if phrase.search(x.title) 现在,数据库本身不会有太多变化
phrase = re.compile(request.get("query"))
data = Entry.all().fetch(50000) #this takes around 10s when there are 6000 records
result = x for x in data if phrase.search(x.title)
现在,数据库本身不会有太多变化,每天的搜索不会超过200-300次
有没有办法缓存所有条目(我预计不会超过50000个条目,每个条目都不会超过500字节),这样检索它们就不会花费超过10秒的时间?或者将其并行化?我不介意10秒,但我介意用户等待10秒
要解决诸如“为它编制索引并使用.filter()”-查询是一个regexp,我不知道是否有任何索引机制允许使用regexp。由于条目数量有限,您可以对所有条目进行memcache,然后在内存中按您概述的方式进行筛选。但是,请注意,每个memcache项不能超过1mb。但您可以并行获取多达32mb的memcache条目 因此,将条目拆分为子集,memcache这些子集,然后通过预计算memcache键并行读取它们 详情如下: 您还可以使用or(无耻插头)将数据存储在app engine的本地实例上,这样您就可以更快地访问所有实体,而不受memcache边界或数据存储延迟的限制
提示:如果本地实例的内存超过185MB,就会被杀死,因此如果您知道自己在做什么,就可以在其中存储相当多的数据 由于您的数据大约为20MB,您可以将其完全加载到本地实例内存中,这将是您所能获得的最快速度。或者,您可以将其存储为应用程序旁边的数据文件,读取速度比访问数据存储快。如何将内容加载到本地实例内存中?@Merlin只需将其作为全局变量(或类变量)存储在模块中即可。