2011-12-14 3 views
10

도구 버전 :Python memcached로 장고 캐시의 내용을 확인하려면 어떻게해야합니까?

  • 파이썬 2.6.5
  • 장고 1.3.1
  • memcached를 1.4.10
  • 파이썬 memcached를 1.48

Memcached가 현재 실행중인 :

$ ps -ef | grep memcache 
nobody 2993  1 0 16:46 ?  00:00:00 /usr/bin/memcached -m 64 -p 11211 -u nobody -l 127.0.0.1 

나는 미국이다. NG의 memcached를하고 파이썬 내 장고가 proj로 memcached를하고 난 다음 settings.py에서처럼 설정 한 :

from django.core.cache import cache 
cache.set('countries', ['Canada', 'US']) 

그때 장고를 엽니 다

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

내가 코드의 캐시를 설정 한 캐시의 내용을 검사하는 쉘 : 나는 장고의 캐시를 사용하는 경우

>>> from django.core.cache import cache 
>>> 'countries' in cache 
True 
>>> import memcache 
>>> mc = memcache.Client(['127.0.0.1:11211'], debug=1) 
>>> mc.get('countries') 
>>> 

countries 키가 존재한다. 그러나 파이썬의 memcache를 사용할 때 나는 국가를 위해 아무것도 가지지 않는다. 위의 무엇을 잘못하고 있습니까?

답변

8

장고 접두어에는 콜론이있는 캐시 키가 있습니다. 이 도움이되지 않으면 memcached like so을 검사 할 수 있습니다.

+0

참고로 django는 기본적으로 캐시 키 앞에 콜론을 붙이지 않습니다. 그러나 여기에 설명 된 KEY_PREFIX 구성 옵션을 사용하면이 작업을 수행 할 수 있습니다. http://bit.ly/1lzFFPi –

+0

[Django Cache Key Prefixing] (https://docs.djangoproject.com/en/dev/topics/cache/#cache-key-prefixing) URL을 왜 단축 하시겠습니까? – tback

+1

내가 코멘트 공간이 부족할 것이라고 생각했기 때문에 나는 그것을했다. (나는 앞으로 그것을하지 않을 것이다) –

5

당신은에서 memcached_stats를 사용할 수 있습니다 https://github.com/dlrust/python-memcached-stats

예 : 는 (필자는 캐시 pylibmc을 사용하지만, 나는이 같은 당신이 파이썬 memcached를 사용하는 것입니다해야한다고 생각)이

import pylibmc 

from memcached_stats import MemcachedStats 
mem = MemcachedStats() # connecting to localhost at default memcached port 

# print out all your keys 
mem.keys() 

# say for example key[0] is 'countries', then to get the value just do 
key = mem.keys()[0] 
value = mc.get (key) 

을 memcaced_stats에 대한 명령 행 인터페이스입니다. python -m memcached_stats

README가 매우 명확하므로 github repo를보십시오.

+0

mc.get()을 수행하는 코드에 버그가있다. mc는 무엇인가 ...? Pylibmc에서 가정합니다. + 1-thd. memcached-stats lib는 굉장합니다. –

+0

docs를 참조하십시오. http://sendapatch.se/projects/pylibmc/ ... 클라이언트 인스턴스화의 경우 ... mc = pylibmc.Client ([ "127.0.0.1"], binary = True, behaviors = { "tcp_nodelay": True, "ketama": True}) – jpwagner

2

다음 스크립트는 memcached 서버의 모든 내용을 덤프합니다. Ubuntu 12.04와 memcached localhost로 테스트되었으므로 milage가 다를 수 있습니다.

#!/usr/bin/env bash 

echo 'stats items' \ 
| nc localhost 11211 \ 
| grep -oe ':[0-9]*:' \ 
| grep -oe '[0-9]*' \ 
| sort \ 
| uniq \ 
| xargs -L1 -I{} bash -c 'echo "stats cachedump {} 1000" | nc localhost 11211' 

모든 캐시 슬래브를 통과하여 각각 1000 개의 항목을 인쇄합니다.

관련 문제