[perl] Memcachedのインストール・利用方法
memcachedをdaemontoolsから使うドキュメントを公開しています。
弊社ではキャッシュサーバとしてmemcachedをよく利用しています。
memcachedとはデーモンがメモリーを確保し、その中に変数の情報を格納できる仕組みです。大変高速に動作し、Mixiでも採用されていたりと、非常に信頼性の高いキャッシュシステムです。
使い方はごくシンプルで、キーを元に値をセットします。
ファイルキャッシュではなく、メモリ上に値を持つので、オブジェクトをそのままセットできます。(シリアライズされません)
Memcachedのインストール
CentOS(Linux)とFreeBSDでインストールします
CentOS(Linux)
yumで一発でインストールです
# yum install memacached
デーモンを起動します
# service memcached start Distributed memory caching (memcached) を起動中: [ OK ]
以下のようなプロセスが起動されると思います。
memcached -d -p 11211 -u nobody -c 1024 -m 64
memcachedに渡すオプションを変更する場合は
/etc/rc.d/init.d/memcached
を編集します
FreeBSD
/usr/ports/databases/memcached sudo make install
※FreeBSD6系でしか試していませんが、多分他のバージョンでもports以下は同じディレクトリかと思います。
デーモンを監視するツール(daemontools)
service コマンドでの起動でも十分ではあるのですが
弊社ではMemcachedがストップするという状態を2,3度経験しまして、
慎重を期すために、以後はdaemontools経由でmemcachedを取り扱う事にしています。
Mixiの場合でもdaemonotoolsを使っているようでしてdaemontoolsでの起動スクリプト例があります。
※daemontoolsについては次回の記事で解説致します。
perlから使ってみる
perlから使うためにはCPANモジュールの「Cache::Memcached::Fast」をインストールします。
# perl -MCPAN -e 'install Cache::Memcached::Fast'
データのset、getをしてみます。
use Cache::Memcached::Fast;
my $key = "key";
my $cache = Cache::Memcached::Fast->new({servers=>["localhost:11211"]});
$cache->set($key,"http://www.yahoo.co.jp");
if( my $val = $cache->get($key) ) {
warn "[ GET CACHE ] ".$val;
}
このプログラムを実行すると、きちんとmemcachedが起動している状態であれば
http://www.yahoo.co.jp
と表示されます。
PHPで試してみる
PHPではpeclライブラリの「php-pecl-memcache」をインストールします
# yum install php-pecl-memcache
#!/usr/bin/php
<?php
$key = "key";
$cache = new Memcache;
$cache->connect("localhost", 11211);
$cache->set($key,"http://www.php.net/");
if ( $val = $cache->get($key) ) {
echo "[ GET CACHE ] ".$val;
}
?>
string(32) "[GET CACHE ] http://www.php.net/"
と表示されれば成功です
Memcachedの使いどころ
実際のWebアプリケーションでは主にページのキャッシュ、DBの抽出結果のキャッシュなどに使われています。
次回のMemcachedの記事ではperl上でのDBの抽出結果のキャッシュの実装について書きたいと思います。
関連リンク
- memcached公式ページ
- ミクシィのCTOが語る「mixiはいかにして増え続けるトラフィックに対処してきたか」(YAPC::Asia 2006) Tokyo (外部リンク)
- 第5回 memcachedの運用と互換アプリケーション
- トラフィックがすごいです、400Mとか平気で行ってます。
- memcached(株式会社フィードフォース技術チームのサイト)
- memcachedの起動オプションが詳細に記載されています。








