私は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
キャッシュセットのコードを見ずに誰でも助けてくれますか? –
@Daniel Roseman、投稿を更新しました – dbf