我正在尝试将值“name2”从 Django 保存到 memcache 中并获得......有趣的结果。
我正在使用 Django 1.5.4,python 2.7.3。
我当前的设置:
在我的 django.settings 文件中:
设置.py
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '123.123.123.123:11211',
}
}
一些python.py
import memcache
def heavy_view2():
s = memcache.Client(['123.123.123.123:11211'])
# s.set("name", "david");
return s.get("name1")
所以对于一切标准,当我去我的服务器并设置memcache值“name1”时,我可以从我的机器上拉下来!
现在使用 Django:
from django.core.cache import cache
def heavy_view():
cache_key = 'name'
result = cache.get(cache_key)
return result
>>>> print(heavy_view())
>>>> None
这很奇怪!特别是因为我设置了“名称”服务器端!可是等等!当我做:
from django.core.cache import cache
def heavy_view():
cache_key = 'name1'
cache_time = 100 # time to live in seconds
if not result:# some calculations here
print('set name1')
result = 'tbone'
cache.set(cache_key, result, 100)
return result
>>>> heavy_view()
>>>> 'set name1'
>>>> r = heavy_view()
>>>> 'tbone'
但是当我回到我的服务器并请求“name1”时,我得到了 None。
使用heavy_view() 的后续调用返回我的“缓存”结果。
但是,如果我使用以下命令重新启动服务器 memcache:sudo service memcache restart,结果将丢失。
尽管如此,在 SERVER 上查找“name1”总是返回 None。
django 是否运行它自己的 memcache 守护进程?我对我的结果的去向感到非常困惑!