当我运行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',
}
}
答案 0 :(得分:3)
确保使用正确的缓存。试试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的缓存代理或您的配置。
答案 1 :(得分:0)
我相信django用一个版本增加了密钥。例如,
django_memcache.set('my_key', 'django', 1000)
将在memcache中设置键:1:my_key
:
<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