2012-09-10 75 views
12

当我运行python manage.py shell,然后:Django的缓存cache.set不存储数据

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

(output:) None 

我试图重新启动内存缓存,这里是什么在我的设置:

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

你已经安装了Python-的memcached或pylibmc之一? –

+0

是的,我已经安装了python-memcached –

+0

您是否已验证端口11211已打开? –

回答

2

确保它的使用正确的缓存。尝试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的缓存代理服务器或您的配置。

0

我相信django增加了一个版本的关键。例如,

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

将设置键: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