簡體   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