20

When I run python manage.py shell and then:

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

(output: ) None

I tried restarting memcache, and here is what's in my settings:

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

2 回答 2

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 的缓存代理或您的配置。

于 2015-08-05T20:50:19.670 回答
0

我相信 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

于 2016-08-18T19:22:29.070 回答