[get] memcached에 모든 키를 설정하십시오.

memcached 인스턴스에 설정된 모든 키를 어떻게 얻을 수 있습니까?

인터넷 검색을 시도했지만 methodPHP 지원하는 것을 제외하고 는 많이 찾지 못했습니다. 실제로 어떻게 든 할 수 있습니다. 텔넷 세션 내에서 어떻게합니까?getAllKeys

memcached cheat sheetMemcached telnet 명령 요약에 언급 된 모든 검색 관련 옵션을 시도했지만 그중 아무것도 작동하지 않으며 올바른 방법을 찾지 못했습니다.

참고 : 현재 개발 중에이 작업을 수행하고 있으므로 새 키가 설정되거나 다른 경쟁 조건이 발생하여 문제가 없으며 키 수도 제한된다고 가정 할 수 있습니다.



답변

여기링크 덕분에 방법을 찾았습니다 (원래 Google 그룹 토론이 여기에 있음 )

먼저 Telnet서버로 :

telnet 127.0.0.1 11211

다음으로 슬래브 ID를 가져올 항목을 나열하십시오.

통계 아이템
STAT 아이템 : 3 : 숫자 1
STAT 아이템 : 3 : 나이 498
STAT 아이템 : 22 : 숫자 1
STAT 아이템 : 22 : 연령 498
종료

‘항목’다음의 첫 번째 숫자는 슬래브 ID입니다. 덤프 할 최대 키 수를 제한하여 각 슬랩 ID에 대한 캐시 덤프를 요청하십시오.

통계 캐시 덤프 3100
ITEM views.decorators.cache.cache_header..cc7d9 [6 b; 1256056128 s]
종료

통계 캐시 덤프 22100
ITEM views.decorators.cache.cache_page..8427e [7736 b; 1256056128 s]
종료


답변

memdump

그 (부분)에 대한 memcdump(때로는 memdump) 명령이 있습니다 libmemcached-tools.

memcdump --servers=localhost

모든 키를 반환합니다.


memcached-tool

최신 버전에는 memcached다음 memcached-tool과 같은 명령 도 있습니다.

memcached-tool localhost:11211 dump | less

모든 키와 값을 덤프합니다.

또한보십시오:


답변

에 대한 자료 @mu는無 여기에 대답합니다. 캐시 덤프 스크립트를 작성했습니다.

스크립트는 memcached 서버의 모든 내용을 덤프합니다. Ubuntu 12.04 및 로컬 호스트 memcached로 테스트되었으므로 마일리지가 다를 수 있습니다.

#!/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 개의 항목을 인쇄합니다.

이 스크립트의 특정 한계를 알고 있어야합니다. 예를 들어 5GB 캐시 서버에 맞게 확장되지 않을 수 있습니다. 그러나 로컬 컴퓨터에서 디버깅 목적으로 유용합니다.


답변

PHP & PHP-memcached가 설치되어 있다면

$ php -r '$c = new Memcached(); $c->addServer("localhost", 11211); var_dump( $c->getAllKeys() );'


답변

세게 때리다

Bash에서 키 목록을 얻으려면 다음 단계를 수행하십시오.

먼저 다음 래퍼 함수를 ​​정의하여 사용하기 쉽도록 만듭니다 (복사하여 셸에 붙여 넣기).

function memcmd() {
  exec {memcache}<>/dev/tcp/localhost/11211
  printf "%s\n%s\n" "$*" quit >&${memcache}
  cat <&${memcache}
}

Memcached 1.4.31 이상

lru_crawler metadump all명령을 사용 하여 캐시의 모든 항목에 대한 메타 데이터를 대부분 덤프 할 수 있습니다 .

와 달리 cachedump심각한 성능 문제를 일으키지 않으며 덤프 할 수있는 키의 양에 제한이 없습니다.

이전에 정의 된 기능을 사용하는 명령 예 :

memcmd lru_crawler metadump all

ReleaseNotes1431을 참조하십시오 .


Memcached 1.4.30 이하

items statistics 명령 을 사용하여 슬래브 목록을 가져옵니다 . 예 :

memcmd stats items

각 슬러브 클래스에 대해 제한 번호와 함께 슬러브 ID를 지정하여 항목 목록을 얻을 수 있습니다 ( 0무제한).

memcmd stats cachedump 1 0
memcmd stats cachedump 2 0
memcmd stats cachedump 3 0
memcmd stats cachedump 4 0
...

참고 : 각 memcached 서버에 대해이 작업을 수행해야합니다.

모든 스텁의 모든 키를 나열하려면 하나의 서버 당 하나의 라이너가 있습니다.

for id in $(memcmd stats items | grep -o ":[0-9]\+:" | tr -d : | sort -nu); do
    memcmd stats cachedump $id 0
done

참고 : 위 명령을 실행하면 항목에 액세스하는 동안 심각한 성능 문제가 발생할 수 있으므로 실행 중에는 실행하지 않는 것이 좋습니다.


노트:

stats cachedump 만 덤프 HOT_LRU활동이 발생할 때 백그라운드 스레드에 의해 관리되는 (IIRC?) 합니다. 이는 2Q Algo를 사용할 수있는 충분한 새 버전에서 LRU 중 하나에 대한 스냅 샷보기를 제공함을 의미합니다.

모든 것을 보려면 lru_crawler metadump 1(또는 lru_crawler metadump all)은 대부분의 공식적으로 지원되는 새로운 방법으로 원하는만큼 많은 키를 비동기 적으로 덤프합니다. 순서가 맞지 않지만 모든 LRU에 영향을 미치며 항목을 삭제 / 교체하지 않는 한 여러 번 실행하면 동일한 결과가 나타납니다.

출처 : GH-405 .


관련 :


답변

가장 쉬운 방법은 python-memcached-stats 패키지, https://github.com/abstatic/python-memcached-stats를 사용하는 것입니다

keys () 메소드를 사용하십시오.

예 –

from memcached_stats import MemcachedStats
mem = MemcachedStats()

mem.keys()
['key-1',
 'key-2',
 'key-3',
 ... ]


답변