memcachedのデータ初期化

インターネットのサービスをやってると、大体ピークは夜10時~12時くらいで、
朝方とかは結構スカスカだったりします。# 仮想化とかの議論は置いておいて、、
 
memcachedによって性能は担保したいけど、
ココってタイミングではリアルタイムでデータが反映されないと困る
なんていうシチュエーションは、いろんなところにあるんじゃないかと思います。
 
今回は運良く?そのタイミングが朝方だったので、そのタイミングで初期化してしまうことにしました。
 
【使ったもの】
libmemcached(http://sourceforge.jp/projects/freshmeat_libmemcached/)
これを使うと以下のようなコマンドがインストールされます。
 memcapable
 memcat
 memcp
 memdump
 memerror
 memflush
 memrm
 memstat
インストールはtarを解凍してconfigureしてmakeしてmake installするアレです。
↓ここら辺が参考になります。
http://l-w-i.net/t/memcached/0install_002.txt
 
 
【使い方】
簡単です↓だけ。サーバは複数指定できます。
./memflush --servers=サーバ:ポート
 
 
【ピヨったところ】
↓消してみたんです。
=======
$ ./memflush –servers=localhost:11211
$ echo $?
0
=======
 
消えたかなぁと思ってdumpしてみたら、、
=======
$ ./memdump –servers=localhost:11211 | wc -l
30505
=======
ちょ、全然消えてないじゃん的な。
 
もっと細かくみてみるかなと思ってmemstat叩いたら、、
=======
$ ./memstat –servers=localhost:11211
Listing 1 Server
Server: localhost (11211)
  pid: 23442
  uptime: 695770
 ~略~
  curr_items: 30505
=======
dumpした時と同じ件数なんすけど・・・
 
ってことで、ダメ押しでmemcat。
memflushする前は値が取れます。
========
$ ./memcat –servers=localhost:11211 HOGEHOGE
[{“hoge”:null,”hage”:0,”hogeType”:1″hogehogeList”:[{以下略~
========
 
memflushしてやって、
=======
$ ./memflush –servers=localhost:11211
=======
 
その後は値が取れません~
========
$ ./memcat –servers=localhost:11211 HOGEHOGE
memcat: HOGEHOGE not found
========
 
なんかアクセスした時に、どっかの領域から削除されて
dumpとかの対象から外れるっぽいんですよね。
 
memdumpして値が取れてたのに、
========
$ ./memdump –servers=localhost:11211 | grep HOGEHOGE
HOGEHOGE
========
 
memcatしてやって取れなくなったら、
========
$ ./memcat –servers=localhost:11211 HOGEHOGE
memcat: HOGEHOGE not found
========
 
dumpしても取れなくなりました。
========
$ ./memdump –servers=localhost:11211 | grep HOGEHOGE | wc -l
0
========
 
なんだか紛らわしいのぅ。
まぁやりたい事やれそうなので良かったですが。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. toriyasu より:

    どうもっすー!

    恐らく、恐らくなんですが
    phpのmemcacheライブラリAPI見るに、

    http://www.php.net/manual/ja/memcache.flush.php

    ↓抜粋
    Memcache::flush() は 実際にリソースを開放するわけではなく、単にすべての項目に 有効期限切れのマークをつけるだけです。
    ↑抜粋

    ようするに、データそのものをクリア(?)するわけではないようです。既知でしたら流していただければー。

  2. shinodogg より:

    お。toriyasu!!
    コメントサンクスです〜
    うん。哲センセがソースみてフラグ立ててるだけですねーって言ってやしたw
    続きは明日のPHP読書会で。。