「PECL::memcache」のインストールと「memcached」の使いどころ

memcachedの導入について、
「memcached」をインストールして、複数のプロセスを自動起動するようにする。
で、まとめましたが、今回は、memcachedの使い方と使いどころについてまとめます。

memcachedクライアントのインストール

まずは、memcacheをプログラム上で扱えるように、クライアントライブラリをインストールします。ここでは、PHPで取り扱えるようにPHP拡張モジュールのPECL::memcacheをインストールします。

# yum install php-devel zlib-devel php-pecl-memcache

phpinho();で、確認できれば、導入完了です。
memcached

memcachedサーバへの接続

memcachedサーバに接続するには、

$mem = new Memcache;
$mem->connect('192.168.0.1',11211);

のようにします。

また、PECL::memcacheは、複数のmemcachedサーバに接続して、クラスタを構成することもできます。その場合には、

$mem = new Memcache;
$mem->addServer('192.168.0.1', 11211);
$mem->addServer('192.168.0.2', 11211);
$mem->addServer('192.168.0.3', 11211);

のようにします。

データキャッシュ(クエリキャッシュ)として使う

一定期間データを保持(キャッシュ)させることにmemcachedを使用します。具体的には、DBからの結果等をキャッシュ(クエリキャッシュ)させて使うことが多いと思います。

<?php
$key   = 'time';

$mem = new Memcache;
$mem->connect('192.168.0.1', 11211);

    if(!$value = $mem->get($key))
    {
        $value = date("r");
        $mem->add($key,$value,MEMCACHE_COMPRESSED,3600);
    }
$mem->close();

print("現在時刻      :".date("r")."");
print("<br />");
print("キャッシュ時刻:".$value."");
?>

ライトバックキャッシュとして使う

カウンタの実装等にmemcachedを用いることで、高速なカウンタが実現できます。具体的には、通常は、memcachedにのみ書き込みを行って、一定量のデータが溜まったら、実際のDBに書き込みを行うというものです。

<?php
$key   = 'count';

$mem = new Memcache;
$mem->connect('192.168.0.1', 11211);

    if(!$mem->get($key))
    {
        $mem->add($key,0);
    }

$num = $mem->increment($key, 1);

    if($num >= 10)
    {
        //-----DB挿入処理-----//
        print("DB挿入実行");

        $mem->replace($key, 0);
    }
$mem->close();
?>

memcahedをセッションストレージとして使う

memcahedは、セッションストレージとして使用することもできます。これは、複数サーバ環境等の共通セッションデータ保存先として、重宝します。
※ただし、データの管理については当然、memcachedに依存するので揮発性の性質をもつということに注意です。

# vi /etc/php.ini
session.save_handler = memcache
session.save_path = "192.168.0.1:11211"

# /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

session.save_handler string
memcache をセッションハンドラとして使用するには、この値を memcache と設定します。

session.save_path string
セッションを格納するためのサーバの URL を、カンマ区切りで指定します。

PHP: 実行時設定 – Manual

phpinfo();で確認できたら完了です。
session

参考ページ

カテゴリー: サーバ・インフラのこと   タグ: , ,   この投稿のパーマリンク

トラックバック

「PECL::memcache」のインストールと「memcached」の使いどころ への3件のコメント

  1. Kiske より:

    今から導入するなら PECL::memcached の方がいいんじゃないかと思います。(名前がややこしいですが)
    http://pecl.php.net/package/memcached

    中身はdiggがオープンソースにしたライブラリで、libmemcachedのラッパーです。
    mget使えるのが大きなメリットだと思います。

    • hiroyuki より:

      コメントありがとうございます。

      確かにそうなのですが、「PECL::memcached」は、「PHP 5.2.0 or newer」なので、今回は「PECL::memcache」を採用しました。

  2. ピンバック: tvotterで活用できた、今まで積み重ねたサーバ構築のいろいろ « FlatLabs Blog

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>