Webサーバー全体を再起動せずに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をクリアしたい。Webサーバーの他の部分に「触れる」ことなくなんとかできますか?

回答:


94

はい。memcacheをクリアできます。試してください:

telnet localhost 11211
flush_all
quit

memcacheがlocalhost 11211で実行されない場合は、調整する必要があります。


3
これを非対話的に行うことはできますか?
ラデク

2
これが実際に効果的だったことを確認しようとしています。これまでのところ、statsにはtotal_items 3926が表示されています。total_itemsが0になると予想していました。キャッシュがフラッシュされたことを確認する方法はありませんか?
ダニーアームストロング

4
@DannyArmstrong、フラッシュはアイテムが期限切れとしてマークするだけです。Memcacheは、パフォーマンス上の理由から、すぐに期限切れのアイテムをキャッシュから削除しません。彼らはAPIの観点から消えているので、あなたは、期限切れのアイテムを取得することができます
TerryE

@TerryE-「期限切れのアイテムを取得できません」ではなく、「期限切れのアイテムを取得できません」と言うつもりですか?
ブライアンマシューズ

はい、そうです。ごめんなさい
-TerryE

40

これはnetcatを使用しても機能します

echo "flush_all" | nc -q 2 localhost 11211 

次に、「OK」を待ちます。


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
ジャンフランコP.

23

memcflush memcacheツールであなたが望むものです:

memcflush --servers=localhost:11211

localhostサーバーが何であるかに変更します。

memcacheツールがサーバーにインストールされていない可能性があります。DebianベースのOSを実行している場合は、次のようにインストールできます。

sudo apt-get install libmemcached-tools

2
Red Hatディストリビューションでは、ユーティリティはに含まれていlibmemcachedます。
ケビン

8

Bashでは、この派手な構文を使用できます。

echo flush_all > /dev/tcp/localhost/11211

それ以外の場合は、memflushコマンドを使用します。

memflush --servers=localhost

telnetとncはサーバーで利用できなかったため、最初のソリューションは問題なく機能します。
ゲッツ

4

むしろタイムアウトを待っているよりも、次のようなことで、コマンドの瞬間を作ることができるflush_all とのquitコマンドを実行します。

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 sleepやfinal をインストールしたくないホストがあったので、これはうまくいきましたquit。私がやった( echo 'flush_all' ; sleep 2 ) | telnet myhost.fqdn.com 11211
ジョシュアフーバー

0

memcachedへの接続にソケットを使用する場合、構文は

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.