将Django的缓存与locmem一起使用(使用简单的Python类作为存储在lists / tuples / maps中的值)可以很好地工作,但不能与memcached一起使用。
只有一小部分密钥(尽管分配了大量内存和大量超时)进入memcached,并且它们都没有任何关联值。
检索它们时,不返回任何值,它们将从缓存中删除。
强制值为“hi”会使缓存中出现的值可检索,但不会解释为什么大多数键都不存在。
问题:
答案 0 :(得分:3)
要了解发生了什么,请运行memcached -vv 2>/tmp/mc_debug_log
(我假设您使用的是某种Unixy系统)并运行短时间 - 您将完成后在该日志文件中查找详细信息。
根据你正在使用的memcached的Python接口,可能只有字符串作为值支持(如cmemcache中的StringClient模块)或者所有pickleable对象都是(带有酸洗的开销)当然,如同在同一个cmemcache,GAE的memcache和python-memcached中的更一般的客户端模块一样;如果你只能使用字符串作为值,可能你正在使用前一种类型的接口?
答案 1 :(得分:3)
显然,键中不能有空格:
http://code.djangoproject.com/ticket/6447
http://blog.pos.thum.us/2009/05/22/memcached-keys-cant-have-spaces-in-them/
当我使用带有空格的钥匙时,一切都变得无法预测。