Лучший способ безопасно хранить Python кортеж строк и целых чисел в memcached? - PullRequest
1 голос
/ 18 августа 2011

Итак, у меня есть веб-приложение, в котором я хочу хранить текущие рейтинги постов на основе алгоритма каждую минуту. Для рендеринга обновленных постов я хотел бы избежать БД и получить данные (например, заголовок поста, автора, ранг и т. Д.) Из memcached (быстрее, верно?).

Одна идея (я использую Django, кстати) для представления, чтобы преобразовать сериализованную строку из memcached обратно в python (используя pickle) и затем отобразить шаблон, отображающий сообщения в правильном порядке. Однако это может быть небезопасно, поскольку предоставленные пользователем данные (заголовок сообщения и т. Д.) Могут содержать символы, которые могут быть проанализированы нежелательным образом.

1) Лучшее решение - просто очистить все данные при сохранении этих объектов или есть другое решение?

2) Если очистка данных является опцией, какие символы следует исключить в различных полях модели Post?

3) Требуется ли для pickle.dump файл для записи или я могу просто получить строку в качестве вывода?

Спасибо, ребята.

Пример того, что нужно хранить:

((post.id, post.title, post.upvotes, post.author.username), (,,,)... )

(скажем, 25 повторяющихся сообщений)

1 Ответ

0 голосов
/ 18 августа 2011

Почему бы просто не позволить django.core.cache позаботиться об этом за вас? Я делаю это из проекта django, в котором memcached подключен как бэкэнд кеша:

$ python manage.py shell
In [1]: from django.core.cache import cache

In [2]: cache.set('woot', (3, 'blah', 590))

In [3]: cache.get('woot')
Out[3]: (3, 'blah', 590)

Работает для любого объекта Python, который можно мариновать.

Кроме того, почему бы просто не кэшировать вывод с помощью HTML и всего остального? Django обеспечивает хорошее кэширование для каждого просмотра и фрагмента шаблона.

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