[英]Why would Django's cache work with locmem but fail with memcached?
使用带有locmem的Django缓存(使用简单的Python类作为存储在lists / tuples / maps中的值)可以很好地工作,但不能与memcached一起使用。
只有一小部分键(尽管分配了足够的内存和大的超时)进入memcached,并且它们都没有任何相关的值。
检索它们时,不返回任何值,它们将从缓存中删除。
强制值为“hi”使得出现在高速缓存中的那些可检索,但不考虑为什么大多数键根本不存在。
问题:
要了解发生了什么,运行memcached -vv 2>/tmp/mc_debug_log
(我假设您使用的是某种Unixy系统)并运行它很短的时间 - 您将在该日志文件中找到详细信息当你完成了。
根据什么Python接口您使用的是memcached的,它可能是唯一的字符串作为值的支持(如StringClient模块cmemcache )或所有与pickle对象(含酸洗,当然在unpickle的开销),如在同一个cmemcache中更一般的Client模块,GAE的memcache和python-memcached ; 如果你只能使用字符串作为值,可能你正在使用前一种类型的接口?
显然,密钥不能包含空格:
http://code.djangoproject.com/ticket/6447
http://blog.pos.thum.us/2009/05/22/memcached-keys-cant-have-spaces-in-them/
一旦我使用了带有空格的钥匙,一切都变得无法预测。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.