キャッシュ機構その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サーバとか例として書く方多いですね

(Visited 1 times, 1 visits today)
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*