[perl] Memcachedのインストール・利用方法

2009年4 月16日  |  Written by matsumoto  |  under PHP, Perl Yahoo!ブックマークに登録    はてなブックマーク - [perl] Memcachedのインストール・利用方法

memcachedをdaemontoolsから使うドキュメントを公開しています。

弊社ではキャッシュサーバとしてmemcachedをよく利用しています。

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をしてみます。

 #!/usr/bin/perl
 
 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の抽出結果のキャッシュの実装について書きたいと思います。

関連リンク

現在コメントはありません | コメントの投稿はこちら

コメントを書き込む

コメント本文

※コメントのフォーム内で以下のタグがご利用いただけます
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

私はチーム・マイナス6%です