如何在 Google App Engine 中缓存参考属性?
例如,假设我有以下模型:
class Many(db.Model):
few = db.ReferenceProperty(Few)
class Few(db.Model):
year = db.IntegerProperty()
然后我创建了许多Many
只指向一个的Few
:
one_few = Few.get_or_insert(year=2009)
Many.get_or_insert(few=one_few)
Many.get_or_insert(few=one_few)
Many.get_or_insert(few=one_few)
Many.get_or_insert(few=one_few)
Many.get_or_insert(few=one_few)
Many.get_or_insert(few=one_few)
现在,如果我想遍历所有Many
',读取它们的few
值,我会这样做:
for many in Many.all().fetch(1000):
print "%s" % many.few.year
问题是:
- 请问每次访问都会
many.few
触发一次数据库查找吗? - 如果是,是否可以在某处缓存,因为每次只需一次查找就足以带来相同的实体?
正如一条评论中所指出的:我知道 memcache,但是当我通过引用调用另一个实体时,我不确定如何“注入”它。
在任何情况下,memcache 都不会有用,因为我需要在执行中进行缓存,而不是在它们之间。使用 memcache 无助于优化此调用。