Скорость Memcache в App Engine "dict" против "Class Object" - PullRequest
0 голосов
/ 05 октября 2011

У меня есть обработчик страницы с 95% трафика, он выбирает модель из БД, используя ее ключ, а затем использует поля в выбранной модели для заполнения шаблона django.

Я хочу запоминать извлеченную модель, чтобы избежать чтения из БД. Не все поля модели используются в шаблоне, поэтому я хочу кэшировать его только с необходимыми полями, чтобы улучшить использование кэша и разместить больше таких моделей в кэше.

Итак, я хочу преобразовать Модель в словарь или «класс boject» только с полями, необходимыми в шаблоне.

Memcache использует pickle для сериализации значений, поэтому для целей сериализации будет более быстрый словарь или «объект класса» ??

Ответы [ 3 ]

2 голосов
/ 06 октября 2011

Ни! Вместо этого кэшируйте буфер протокола объекта, как описано здесь .

Возможно, вы захотите перейти на NDB , который имеет встроенную поддержку экземпляров модели memcaching.

1 голос
/ 05 октября 2011

Вам следует рассмотреть определение __getstate__ / __setstate__ методов для вашего класса модели, чтобы вы могли выбрать только те свойства вашей модели, которые вы хотите кэшировать, и упростить процесс преобразования;ваши необрабатываемые данные поступают как фактический экземпляр модели, а не как подставка, которую вам придется каким-то образом преобразовать.

1 голос
/ 05 октября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...