2009-07-08 74 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;如果你只能使用字符串作爲值,大概你使用的是前一種類型的接口?

相關問題