2012-01-04 22 views
1

私はmemcachedに問題があります。テンプレート 'question_%d_%d'の文字列キーを使用して値を保存します。私はメモリをenoughtていますmemcached:アイテムはキャッシュにありません

STAT bytes 13307757 
STAT limit_maxbytes 134217728 

が、ここでは自分のアプリケーションのログです:

ので、私たちが見ることができる、2つのキャッシュ・ミスに同じキーのリードを持つ二つの連続通話こと、そして一度だけ
2012-01-03 16:40:42,896 Get question for key question_4_1045: cache miss 
2012-01-03 18:03:10,270 Get question for key question_4_1045: cache miss 
2012-01-03 22:26:16,454 Get question for key question_4_1045: cache miss 
2012-01-04 02:01:54,639 Get question for key question_4_1045: cache miss 
2012-01-04 02:45:03,647 Get question for key question_4_1045: cache miss 
2012-01-04 02:46:55,880 Get question for key question_4_1045: cache hit 
2012-01-04 02:51:55,606 Get question for key question_4_1045: cache miss 

値はキャッシュからフェッチされます。

なぜmemcachedは十分なスペースがあってもキャッシュから自分のデータを削除するのですか?それを修正することは可能ですか?

memcachedログファイル(configファイルによると/var/log/memcached.log)をチェックしようとしましたが、空です。 ありがとう!

UPD: Djangoのキャッシュ設定:

CACHES = { 
    'default': { 
     'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 
     'LOCATION': '127.0.0.1:11211', 
     'TIMEOUT': 259200, 
    } 
} 

CACHE_BACKEND = 'memcached://127.0.0.1:11211/' 

ゲッター:

from django.core.cache import cache  
def get_question(level, random_num): 
     key = 'question_' + unicode(level) + '_' + unicode(random_num) 
     question = cache.get(key) 
     if question is None: 
      question = Question.objects.filter(level=level).order_by('id')[random_num] 
      cache.set(key, question) 
      log_message('Get question for key %s: cache miss' % key) 
     else: 
      log_message('Get question for key %s: cache hit' % key) 
     return question 
+0

キャッシュセットのコードを見ずに誰でも助けてくれますか? –

+0

@Daniel Roseman、投稿を更新しました – dbf

答えて

0

いくつかの調査の後、私は、問題の根本的な原因を見ました。 私は(私はジャンゴ1.2を使用して)私のsettings.pyにはDjango 1.2のキャッシュの設定を持っていた:私はタイムアウトを変更することを決めたとき

CACHE_BACKEND = 'memcached://127.0.0.1:11211/' 

私はコピー&ペーストはDjango 1.3用の新しいDjangoのドキュメントからのタイムアウト設定を。したがって、これらのタイムアウト設定は無視され、デフォルトのタイムアウト(5分)が使用されました。

関連する問題