2009-03-09 3 views
1

"Memcache Viewer"에서 기존 키 목록을 덤프하는 방법이 있습니까? 물론 디버깅을위한 스크립트는 사용하지 마시기 바랍니다!GAE SDK Console에서 memcache 키를 덤프 하시겠습니까?

GAE SDK가 "실제"memcache 서버를 사용하지 않는 것 같아서 간단하게하기 위해 파이썬에서 에뮬레이트 된 것 같습니다. 키/값 어딘가에 사전이 있습니다.

답변

8

사람들은 memcached 목록에서이 유형을 많이 요구합니다. 때로는 "뭔가를 디버깅하기 위해 주변을 둘러보고 싶다"라는 정서가 있습니다.

이 문제를 해결하는 가장 좋은 방법은 키를 생성하는 방법을 알고 주어진 값에 대해 저장된 내용을 알고 싶을 때 살펴 보는 것입니다.

디버깅 세션의 범위 내에서 memcached를 사용하는 것이 너무 많으면 로깅 액세스를 시작하십시오.

그러나 memcached는 일반적으로 그런 것들을 허용하지 않기 때문에 빠릅니다. 커뮤니티 서버는 특정 슬래브 클래스 내에서 사용할 수있는 키의 하위 세트를 가져 오는 기능이 제한되어 있지만 실제로 원하는 것은 아니며 Google에서도 해당 키를 구현하지 않습니다. :)

4

번호 memcached에서도 이러한 기능을 찾을 수 없습니다.

이 문제를 생각해 보면이 제한 사항을 이해할 수 있음을 알았습니다. 키 만료, 무효화 및 잠금과 같은 모든 관련 문제가있는 키 레지스트리를 유지해야합니다. 그러한 시스템은 memcaches가 의도 한 것보다 빠르지 않을 것입니다.

+0

GAE 개발 서버에있는 memcache 클라이언트가 실제로 memcache 서버에 연결되어 있습니까? 파이썬에서 에뮬레이트 된 것처럼 보이는 코드를 빠르게 살펴 본다면 ..? – dbr

+0

필자가 가장 잘 이해하고있는 사실은 memcache를 기반으로 할 수는 있지만 실제로는 memcache가 아닌 Google 자체 구현입니다. 그것은 쉽고 일을 잘하기 때문에 memcache API를 사용하고 있습니다. –

0

Memcache는 신속하게 설계되었으며이 기능에 대한 설득력있는 유스 케이스는 없습니다. 따라서 memcached의 나머지 부분과 너무 많이 충돌하는 명령에 필요한 오버 헤드를 정당화 할 수 있습니다.

GAE SDK는 memcached를 시뮬레이션하므로이 기능도 제공하지 않습니다.

+0

올바르지 않습니다. memcached는 모든 키, 플래그, 만료, 캐스 식별자 및 기타 몇 가지 사항을 메모리에 보유합니다. 그것이하지 않는 일은 알려진 시간 (O (1) - 예를 들어 모든 키 나열과 같이)에서 실행할 수없는 옵션을 수행하는 것입니다. – Dustin

+0

네가 맞다. 열쇠는 해쉬가 아니라 원래의 열쇠가 서버에 전달되도록 내가 사용할 서버를 결정하기 위해 해시된다. –

0

내가 생각할 수있는 가장 쉬운 방법은 알려진 ID에 memcache 키를 유지 한 다음 새 키를 삽입 할 때마다 추가하는 것입니다. 이렇게하면 기존 키 목록을 얻기 위해 단일 키를 쿼리 할 수 ​​있습니다.

0

가능한 해결 방법은 다음과 같습니다. 난 당신과 같이 텔넷을 통해 모든 키를 나열 할 수 있습니다 구글 앱 엔진에 익숙하지만 일반 memcache에 서버 이니 그 좋은 작은 레시피 Graham King's blog post

telnet 127.0.0.1 11211 
stats items 
STAT items:7:number 5 
STAT items:7:age 88779 
STAT items:7:evicted 0 
STAT items:7:evicted_time 0 
STAT items:7:outofmemory 0 
STAT items:7:tailrepairs 0 
... etc 
END 
stats cachedump 7 100 
ITEM __builtin__.str_is_browser_supported·user_agent_hash=5706b885fdad3f7049dfb39455dfa7ab10086d97 [269 b; 1298926467 s] 
END 

감사합니다.

관련 문제