繁体   English   中英

为什么Django的缓存可以与locmem一起工作但是memcached失败了?

[英]Why would Django's cache work with locmem but fail with memcached?

使用带有locmem的Django缓存(使用简单的Python类作为存储在lists / tuples / maps中的值)可以很好地工作,但不能与memcached一起使用。

只有一小部分键(尽管分配了足够的内存和大的超时)进入memcached,并且它们都没有任何相关的值。

检索它们时,不返回任何值,它们将从缓存中删除。

强制值为“hi”使得出现在高速缓存中的那些可检索,但不考虑为什么大多数键根本不存在。

问题:

  1. 为什么只有某些键最终在memcached中而其他键不在,即使所有值都设置为“hi”?
  2. 有没有办法启用更多日志记录或错误报告? (一切似乎都默默地失败)
  3. 为什么Python类正确地序列化到locmem但不是最终在Memcached中?

要了解发生了什么,运行memcached -vv 2>/tmp/mc_debug_log (我假设您使用的是某种Unixy系统)并运行它很短的时间 - 您将在该日志文件中找到详细信息当你完成了。

根据什么Python接口您使用的是memcached的,它可能是唯一的字符串作为值的支持(如StringClient模块cmemcache )或所有与pickle对象(含酸洗,当然在unpickle的开销),如在同一个cmemcache中更一般的Client模块,GAE的memcachepython-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM