キャッシュ機構その1 – memcached

前々から試してみようと思っていたmemcachedMacOS X Leopardに入れたのでそのときのメモ。
memcachedは、分散メモリキャッシュサーバでRDBMSから得た結果やその他、動的にスクリプトから生成した結果をキャッシュしておく機構。と解釈。mixiや、はてな等々で活用されているそうです。
詳しくは、gihyo.jpで連載されている連載「memcachedを知り尽くす」がわかりやすくておすすめです。*1
で、Leopardにmemcachedを入れる前には、libeventというネットワークサーバのイベント処理に便利なライブラリ*2をインストール前に導入しておく必要がある。これがないとmakeでこけてしまう。
http://www.monkey.org/~provos/libevent/ から最新版を落としてconfigure & makeすればOK。

% tar xvzf libevent-1.4.6-stable.tar.gz
% cd libevent-1.4.6-stable/
% ./configure
% make
% sudo make install

こうすると特に問題なく入るはずです。(もちろん、XcodeLeopardに入っていなければ駄目ですが)

次に本体のmemcachedをインストール。
http://www.danga.com/memcached/ から同様にソースコードをダウンロードして同様にconfigure & makeする。

% tar xvzf memcached-1.3.0.tar.gz
% cd memcached-1.3.0/
% ./configure
% make
% sudo make install

で、実際に入ったか見てみる。-h でバージョンとコマンドラインオプションの表示。

% memcached -h
memcached 1.3.0

  • p TCP port number to listen on (default: 11211)
  • U UDP port number to listen on (default: 0, off)

(以下省略)

無事インストール完了。
連載「memcachedを知り尽くす」の中でも取り上げられている通り、memcachedのプロトコルはシンプルなのでtelnetで試す事ができる。
memcachedをまず常駐させる。

% memcached -p 11211 -m 64m -vv
slab class 1: chunk size 88 perslab 11915
slab class 2: chunk size 112 perslab 9362
slab class 3: chunk size 144 perslab 7281
slab class 4: chunk size 184 perslab 5698
slab class 5: chunk size 232 perslab 4519
slab class 6: chunk size 296 perslab 3542
(以下省略)

最初に出てきたのは確保した64Mbyteの領域を如何にキャッシュ保管用に分割したかを示すステータス。
コンソールをもう一枚開いてtelnetでローカルの11211番にアクセスする。
ここでは、idというキーに対してhideackという7byteの情報をキャッシュとして保持させた。
赤字がクライアントから送った情報。青字がmemcachedからの応答になる。

% telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
set id 0 0 7

hideack

STORED

get id

VALUE id 0 7

hideack

END

quit

Connection closed by foreign host.

見ての通りmemcachedに値がキャッシュされた。
実際、利用する場合はPerlPHPJavaバインディングがあるのでそれらを利用してコードを書けば良い。
コードのイメージは、リクエストが来た際にキャッシュを参照してキャッシュに該当情報がなければ、RDBMSに問い合わせるとか、多々APIを呼び出して応答列を生成し、その結果をキャッシュを作り、次回以降のリクエストに備えておく。といった具合になるのだろう。

*1:こういう記事を見るたび、ネットがあってよかった。と思う。無料で見れるとはありがたいことです

*2:…と、こう解釈しているのですが適切なのでしょうか?httpサーバとか例として書く方多いですね

ブログ通信簿

gooラボブログ通信簿を試してみた。
試したのは数日前ですが。
f:id:hideack:20080723195504p:image
気楽度、マメ度、影響度、主張度と項目があるのですね。
どうしてもこういうのを見てしまうと、

中のアルゴリズムはどうなっているのだろう?

と思ってしまう。
影響度は別のブログからのリンクでも見てるのだろうか。マメ度と気楽度は更新間隔とか回数とかなのかなぁ。と。
主張度は…。なんなんだろ。

結構気になる。
あと、ここで昼休み終了。

焼き鳥

友達と飲みに行く。
お互いに仕事だったので、ではということで会社帰りに合流して某井の頭公園*1の側の焼き鳥屋さんへ行った。
生ビールを頼んだのだが冷えていないのは、消費が多すぎて冷却が追いついていないのだろうな。と思いながら、焼き鳥と共に流し込む。
運用中のサーバーの話から、OSの話、果ては人事・採用の話、ビアガーデンの大ジョッキの容量にまつわる話、道路のガードレールの色の話まで。

話題の幅広すぎ。

途中、お店が停電。普通、居酒屋でこんなことが起きれば結構問題な気がするが、そこはこの焼き鳥屋クオリティ。全く誰も動じない。
2秒後、何故か暗闇の中拍手が起きた。ますますわからない。
その後、しばらくして電気復旧。
ちなみに私が暗闇の中で注文したビールのおかわりは通っていなかった。

あと、後にわかったことだが、瓶ビールを頼むとキンキンに冷えていたことが判明。
お店の人の出入り量とその日の気温で生ビールの消費が多いと踏んだときには、瓶ビールが正解かもしれない。

ラガーがうまい。*2

*1:某になっていない

*2:完全におっさんである

i.softbank.jp

業務連絡を受けたので私が使っている携帯のメール受信のフィルタリングの設定を変更。
基本的に携帯電話のメールアドレスからは受信を許可にして、PCメールは指定したドメインしか受信する様になっていたのだが、どうも話題の"あいふぉ〜ん"で利用するメールアドレスの〜@i.softbank.jp はドコモのメール受信のルールの「ソフトバンク」の携帯電話には含まれない模様。

それにしてもうらやましい。
試しにとりあえずiPod touchを耳にあててみたが寂しくなったのでやめにする。