Обзор кода Django Memcache: Сравнить и установить

В связи с этим вопросом.

Я пытаюсь реализовать счетчик приращения в memcached, используя сравнение и набор Memcache .

Может ли кто-нибудь просмотреть этот код для потенциальных лазеек ?

def increment(id): client = get_cache('memcache') i = 0 items = 0 while i <= 3: counter = client._cache.gets(id) if counter is not None: items = client._cache.cas(id, counter+1) if items: break else: items = client._cache.add(id, 0) if items: break i+= 1 return items 

Кроме того, поскольку я использую внутренний API memcached, недоступный через Django, добавляет ли этот префикс ключа, который я установил в настройках. Если не так, как я могу добавить ключ для этого внутреннего вызова API?

 'memcache': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', 'KEY_PREFIX': 'store_', } 

2 Solutions collect form web for “Обзор кода Django Memcache: Сравнить и установить”

Я действительно не отвечаю на ваш вопрос напрямую, но я не могу не спросить, почему вы не просто используете метод incr() для атомарного увеличения значения – для чего он нужен. Возможно, вы просто разместили пример, но если это так, то это вопрос, вводящий в заблуждение.

Помимо некоторых других комментариев выше, я обнаружил, что по умолчанию поддержка cas отключена в клиенте python-memcached. Поскольку Django не поддерживает способ добавления атрибутов к конструктору, мне пришлось добавить:

client._cache.cache_cas = True

чтобы заставить cas () фактически использовать команду cas. Кроме того, пожалуйста, прочитайте об источнике reset_cas в источнике: http://bazaar.launchpad.net/~python-memcached-team/python-memcached/trunk/view/head:/memcache.py

  • Проблемы с производительностью memcache App Engine / ndb.get_multi
  • memcache не будет хранить ключ / значение, потому что значение слишком велико
  • Как импортировать классы django.middleware в проект Google App Engine?
  • Изменения кода Django, не отражающие производственный сервер
  • Как установить тайм-аут получения Memcached в Django
  • Как incr работает со временем истечения срока действия?
  • Получить список ключей кэша в Django
  • Использование нескольких серверов memcache в пуле
  • Кэширование Matplotlib с Memcache (Wont Pickle)
  • Как я могу очистить memcache Google App Engine при каждом развертывании сайта?
  • Кэширование Django только для аутентифицированных пользователей
  • Python - лучший язык программирования в мире.