Обзор кода 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

  • как вернуть все memcached значения в Google App Engine?
  • Установка объекта в API кэша Django завершается сбоем из-за ошибки сортировки
  • Установка pylibmc на Ubuntu
  • Удаление определенных элементов из кеша Django?
  • Пилоны и Memcached
  • Проблемы с производительностью memcache App Engine / ndb.get_multi
  • Кэширование Django только для аутентифицированных пользователей
  • Поддерживать большой словарь в памяти для Django-Python?
  • Какие шаги необходимы для реализации memcached в приложении Django?
  • Python - лучший язык программирования в мире.