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

1 投票
2 回答
1498 浏览
提问于 2025-04-16 11:46

我用谷歌的应用引擎做了一个应用,运行得挺好的。不过我现在在考虑怎么优化一下,特别是我听说可以把一些对象存到 memcache 里,而不是存到数据库,这样可以更快地访问那些经常需要的数据。

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

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

然后我有一个实例,想把它放到 memcache 里:

myea = Ea.new(name='John',code='@jo')

我该怎么做呢?

2 个回答

0

罗伯特·克鲁因提供的链接适用于基于数据库的模型。如果你使用的是基于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))
5

如果你很在意数据,首先应该把它写入数据存储中。你可以在写入之前让缓存失效,然后根据你的应用需求,选择在写入后重新缓存,或者在第一次读取时再缓存。

可以看看Nick在高效使用缓存模型上的文章;他提供了一种不错的方法,可以帮助你避免一些常见的问题。

撰写回答