使用Memcached和python-memcache进行缓存

0 投票
1 回答
1290 浏览
提问于 2025-04-20 15:32

我把它们都安装了,但每次我想获取某个键的时候,结果都是None。

>>from django.core.cache import cache #no errors
>>cache.set('value1','value2',39) #no errors
>>cache.get('value1') #no errors but no value either

在settings.py文件里,我写了这个。

CACHES = {
'default':{
    'BACKEND':'django.core.cache.backends.memcached.MemcachedCache',
    'LOCATION':'127.0.0.1:1991',
    'TIMEOUT': 1200,
    }
}

到底出了什么问题呢?我连一点头绪都没有,不知道该从哪里开始排查...

1 个回答

1

你确定memcached真的在运行吗?而且它的设置是监听127.0.0.1的1991端口吗?默认情况下,memcached是监听11211端口的。

django.core.cache.cachememcache无法存储数据时表现得很无辜,它不会抛出错误或者返回任何提示。

你可以用下面的方法更直接地测试memcache:

import memcache

for port in (1991, 11211):
    print "Testing memcached on port %d" % port
    mc = memcache.Client(['127.0.0.1:%d' % port])

    if mc.set('value1', 'value2'):
        print "stored key value pair"
        if mc.get('value1') == 'value2':
            print "successfully retrieved value"
            break
        else:
            print "Failed to retrieve value"
    else:
        print "Failed to store key value pair"

撰写回答