[英]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.