是否可以像这样解析谷歌应用引擎对象......
objects = db.GqlQuery('SELECT * FROM Database WHERE item='random'')
memcache.add('object', objects, 3600)
if object =='some condition':
#here can I do a query on 'objects' without using GqlQuery
elif object =='something else':
#do a different query than the one above
我们的想法是将对象存储到memcache中,然后以不同的方式操作该对象。这是为了减轻数据存储区的读数。提前谢谢!
答案 0 :(得分:2)
你可以而且每个人都会发现他们这样做了。但是你需要考虑很多事情。
目前您正在尝试存储查询对象而不是存储在memcache中的结果。代码中的objects
是查询对象。使用run,fetch等来获得一些结果。
操作对象并存储在memcache中而不回写将意味着您将丢失数据等.memcache不是一个可靠的存储机制(它只是一个缓存),并且可以随时驱逐事物。 / p>
如果您的查询旨在返回单个结果,则通过键获取对象,与查询相比,它比memcache更有效且速度更慢。 (ndb将缓存为你获取 - 请参阅下一点)
看起来您刚开始使用appengine,如果您还没有现有的代码库,请先使用ndb
而不是db
。在我看来,这是一个更好的图书馆。 ndb
在memcache和请求/实例中为你做了很多缓存(当使用get()时)。