전체 웹 서버를 다시 시작하지 않고 memcache를 다시 시작하거나 지우는 방법은 무엇입니까?


47

/opt/eduserver/eduserver 나에게 옵션을 제공합니다 :

사용법 : / opt / eduserver / eduserver {start | stop | startphp | startwww | startooo | stopphp | stopwww | stopooo | restartphp | restartwww | restartooo | status | restart | reload | force-reload}

여기서 memcache는 PHP 모듈 memcache.ini입니다 /opt/eduserver/etc/php/conf.d.

커맨드 라인에서 memcache를 지우고 싶습니다. 웹 서버의 다른 부분을 '터치'하지 않고 어떻게 든 할 수 있습니까?

답변:


94

예. memcache를 지울 수 있습니다. 시험:

telnet localhost 11211
flush_all
quit

memcache가 localhost 11211에서 실행되지 않으면이를 조정해야합니다.


3
비 대화식으로 이것을 할 수 있습니까?
Radek

2
실제로 이것이 효과적인지 확인하려고합니다. 지금까지 통계에는 여전히 total_items 3926이 표시됩니다. total_items가 0으로 떨어질 것으로 예상했습니다. 캐시가 플러시되었는지 확인하는 방법이 아닙니까?
Danny Armstrong

4
@DannyArmstrong, flush는 항목을 만료 된 것으로 표시합니다. Memcache는 성능상의 이유로 만료 된 항목을 캐시에서 즉시 제거하지 않습니다. 만료 된 항목을 가져 와서 API 관점에서 사라졌습니다.
TerryE

@TerryE- "만료 된 항목을 얻을 수 있습니다"대신 "만료 된 항목을 얻을 수 없습니다"라고 말 하시겠습니까?
Brian Matthews

네 저도 그렇습니다. 죄송합니다
TerryE

40

이것은 netcat을 사용하여 작동합니다

echo "flush_all" | nc -q 2 localhost 11211 

그런 다음 "확인"을 기다리십시오.


4
2 초 동안 하드 코드 없음 :printf "flush_all\nquit\n" | nc -q -1 127.1 11211
youfu

3
OSX는 타임 아웃을 위해 -w가 필요합니다 :echo "flush_all" | nc -w 2 localhost 11211
mahemoff

종료 및 대기없이 :printf "flush_all" | nc localhost 11211
Gianfranco P.

23

memcflush memcache 도구에는 원하는 것이 있습니다.

memcflush --servers=localhost:11211

localhost서버가 무엇이든 변경하십시오 .

memcache 도구는 서버에 설치되어 있지 않을 수 있습니다. 데비안 기반 OS를 실행하는 경우 다음과 같이 설치할 수 있습니다.

sudo apt-get install libmemcached-tools

2
Red Hat 배포판에서이 유틸리티는에 포함되어 libmemcached있습니다.
Kevin

8

Bash에서는 다음과 같은 멋진 구문을 사용할 수 있습니다.

echo flush_all > /dev/tcp/localhost/11211

그렇지 않으면 다음 memflush명령을 사용하십시오 .

memflush --servers=localhost

서버에서 telnet과 nc를 사용할 수 없었기 때문에 첫 번째 솔루션은 잘 작동합니다.
Getz

4

오히려 당신이 다음에 의해 명령이 순간 할 수 제한 시간을 기다리는 것보다 flush_allquit명령

printf "flush_all\r\nquit\r\n" | nc localhost 11211

또는없는 경우 nc:

printf "flush_all\r\nquit\r\n" > /dev/tcp/127.0.0.1/11211

당신은 확인할 수 있지만이 방법은, 출력을 생성하지 않지만 그것을 확인하여 작동하는 stats것을 볼 수 cmd_flush증가.


3

(sleep 2; echo flush_all; sleep 2; echo quit; ) | telnet 127.0.0.1 11211

비 대화식으로 실행하려면

@heiko 덕분에


nc. Note that I worked fine for me without either the initial 잠자기 를 설치하고 싶지 않은 호스트가 있었기 때문에 나에게 효과적이었습니다 quit. 내가 한( echo 'flush_all' ; sleep 2 ) | telnet myhost.fqdn.com 11211
Joshua Huber

0

memcached에 연결하기 위해 소켓을 사용하는 경우 구문은 다음과 같습니다.

echo "flush_all" | nc -U ~/memcached.sock

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.