テストや他のアプリケーションを実行するときに、memcache のキャッシュをすばやくクリアしたいことがあります。以下に memcache のキャッシュをクリアする方法をいくつかまとめました。この方法が皆さんのお役に立つことを願っています。
過去に同僚からクリアするように頼まれました。 memcache キャッシュ。私は常に kill コマンドを直接使用してプロセスを終了します。後で、緊急時に memcachd のキャッシュをクリアして記録する簡単な方法があることを知りました。
1. まず、ssh コマンドを使用して、memcached が配置されているサーバーにログインします。 コマンドは次のとおりです。
コードをコピー | |
|
コードは次のとおりです
#telnet ローカルホスト 11211 | |
以降の表示: |
localhost.localdomain (127.0.0.1) に接続しました。
エスケープ文字は「^]」です。
3. この時点で、次の内容を入力し、Enter キーを押してキャッシュの内容をクリアします。
コードをコピー
すべてフラッシュ | |
4. 最後に Telnet を終了し、quit コマンドを使用して、exit してリモート ホストを終了します。 |
コードは次のとおりです
コードをコピー
/** | * Memcached の期限切れメモリのリサイクル | */||||
プライベート $server_id; パブリック関数 __construct($host,$port) { $this->server_id = "$host:$port"; $this->connect($host,$port); } //期限切れのメモリをすべてリサイクルします パブリック関数 gc() { $t = 時間(); $_this = $this; $func = function($key,$info) ($t,$_this) を使用します { if($info[1] - $t delete($key); } }; $this->リスト($func); } // キャッシュされたすべてのコンテンツに関する情報を表示します パブリック関数 info() { $t = 時間(); $func = function($key,$info) ($t) を使用 { echo $key,' => Exp:',$info[1] - $t,"n" //キャッシュオブジェクトの残り有効期限を表示します ; }; $this->リスト($func); } プライベート関数リスト($func) { $sid = $this->サーバーID; $items = $this->getExtendedStats('items') //memcached のステータスを取得します ; foreach($items[$sid]['items'] as $slab_id => $slab) //指定されたサーバー ID のすべてのスラブを取得します { $item = $this->getExtendedStats('cachedump',$slab_id,0); // すべてのスラブを走査します foreach($item[$sid] as $key => $info) //Slab にキャッシュされたオブジェクト情報を取得します { $func($key,$info); } } } } $mem = 新しい mem_dtor('127.0.0.1',11211); $mem->info();//ステータスを表示 $mem->gc(); //リサイクル memcacheキャッシュの一括削除ソリューション Memcache はデフォルトで delete(key) と flash_all のみをサポートします。これらの 2 つの方法は極端すぎるため、次のようなユーザーの特定のニーズを満たすことができません。「aaaaaaaa_」で始まるすべてのキャッシュを一括削除する場合はどうすればよいですか? DBと組み合わせた2つのmemcache
|