我使用谷歌应用引擎构建了一个应用程序。该应用程序工作正常,但我正在考虑优化它,特别是我听说过将对象持久化到memcache
而不是数据存储的概念,作为快速访问经常需要的数据的一种方法。
假设我有这个模型的对象:
class Ea(db.Model):
name = db.StringProperty()
code = db.StringProperty()
我已经说过要保留在memcache
myea = Ea.new(name='John',code='@jo')
我该怎么做?
答案 0 :(得分:5)
如果您关心数据,则应首先将其写入数据存储区。您可以在预写入时使缓存无效,然后根据您的应用程序,在写入后或第一次读取时重新缓存。
查看Nick的帖子efficiently memcaching models;他提出了一个很好的模式,并会帮助你避免一些常见的问题。
答案 1 :(得分:0)
Robert Kluin指定的链接适用于基于数据库的模型。对于基于ndb的模型,您可以使用它。
def ndb_entity_to_protobuf(e):
return ndb.ModelAdapter().entity_to_pb(e).Encode()
def protobuf_to_ndb_entity(pb):
# precondition: model class must be imported
return ndb.ModelAdapter().pb_to_entity(entity_pb.EntityProto(pb))