在MemCache中保存对象而不是数据存储

时间:2011-02-13 23:32:50

标签: python google-app-engine google-cloud-datastore

我使用谷歌应用引擎构建了一个应用程序。该应用程序工作正常,但我正在考虑优化它,特别是我听说过将对象持久化到memcache而不是数据存储的概念,作为快速访问经常需要的数据的一种方法。

假设我有这个模型的对象:

class Ea(db.Model):  
    name = db.StringProperty()  
    code = db.StringProperty()

我已经说过要保留在memcache

中的以下实例
myea = Ea.new(name='John',code='@jo')

我该怎么做?

2 个答案:

答案 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))