Сохраняйте объекты в MemCache вместо Datastore - PullRequest
1 голос
/ 14 февраля 2011

Я создал приложение с помощью Google App Engine.Приложение работает нормально, но в настоящее время я думаю об его оптимизации, и, в частности, я слышал об этой концепции сохранения объектов в memcache вместо хранилища данных в качестве средства быстрого доступа к часто необходимым данным.

Предположим, у меня есть объекты этой модели:

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

И я сказал следующий экземпляр, который хочу сохранить в memcache

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

Каксделать это?

Ответы [ 2 ]

5 голосов
/ 14 февраля 2011

Если вы заботитесь о данных, вы должны сначала записать их в хранилище данных. Вы можете аннулировать предварительную запись в кэш, а затем, в зависимости от вашего приложения, восстановить запись после записи или при первом чтении.

Ознакомьтесь с постом Ника о эффективно memcaching моделях ; он представляет хороший образец и поможет вам избежать некоторых распространенных проблем.

0 голосов
/ 02 ноября 2017

Ссылка, указанная Робертом Клюином, работает для модели на основе БД.Для моделей на основе 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))
...