Подтвердить что ты не робот

Django Cache cache.set Не хранить данные

Когда я запустил python manage.py shell, а затем:

from django.core.cache import cache
cache.set("stack","overflow",3000)
print cache.get("stack")

(output: ) None

Я попытался перезапустить memcache, и вот что в моих настройках:

CACHES = { 
  'default' : { 
     'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 
     'LOCATION' : '127.0.0.1:11211',
  }
}
4b9b3361

Ответ 1

Убедитесь, что он использует правильный кеш. Попробуйте from django.core.cache import caches, а затем просмотрите содержимое caches.all(). Он должен иметь только один экземпляр django.core.cache.backends.memcached.MemcachedCache.
Если это так, попробуйте обратиться к нему напрямую, например.

from django.core.cache import caches  
m_cache = caches.all()[0]
m_cache.set("stack","overflow",3000)
m_cache.get("stack")

Это может не решить вашу проблему, но по крайней мере приблизит вас к отладке Memcached вместо прокси-сервера Django или вашей конфигурации.

Ответ 2

Я считаю, что django увеличивает ключ с версией. Например,

django_memcache.set('my_key', 'django', 1000)

установит ключ :1:my_key в memcache:

<36 set :1:my_key 0 1000 6
>36 STORED

Однако, если вы установите ключ через telnet или модуль python-memcached, он сохранит необработанный ключ, как ожидалось:

<38 set my_key 0 1000 13 
>38 STORED

Итак, возможно, вы не запрашиваете правильный ключ?

См. https://docs.djangoproject.com/en/1.10/topics/cache/#cache-key-transformation