2009-07-08 41 views
4

将Django的缓存与locmem结合使用(将简单的Python类作为存储在列表/元组/映射中的值)可以很好地工作,但不适用于memcached。为什么Django的缓存会与locmem一起使用,但memcached会失败?

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

当它们被检索到时,不会返回任何值并将它们从缓存中移除。

强制使用“hi”值会使缓存中出现的那些可检索,但并不能解释为什么大多数密钥根本就不存在。

问题:

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

回答

3

要找出发生了什么事情,跑memcached -vv 2>/tmp/mc_debug_log(我假设你在某种Unixy系统),并运行一段时间 - 你会发现在该日志文件的详细信息当你完成。

根据您正在使用的memcached的Python接口,它可能仅支持字符串作为值(如在cmemcache中的StringClient模块中)或者所有可选对象都是(随着酸洗和取消当然),如在相同的cmemcache中的更一般的客户端模块,GAE的memcachepython-memcached;如果你只能使用字符串作为值,大概你使用的是前一种类型的接口?