PHPでmemcachedを利用する
2008.06.17 / php
(2008.06.18 追記)タイトルのスペルが間違っていたので訂正しました。パーマリンク名も間違ってる。。けどこれは仕方なくこのままにしておきます。orz
最近memcachedを使うことがあったので、使えるようになるまでの個人的メモです。基本的にyum, peclコマンドだけでインストールは可能です。対象OSはFedora8です。
sudo yum -y install memcached sudo yum -y install php-devel #phpizeコマンドを利用するために必要 sudo yum -y install php-pecl\* sudo yum -y install zlib sudo pecl install memcahce
こんな感じでインストールはOKです。あとはmemcache.soをロードするように設定します。php.iniを直接編集してもいいのですが、extension系は/etc/php.d/に別途iniファイルを用意しておいた方が管理しやすいかもです。
sudo vi /etc/php.d/memcache.ini
で、
extension=memcache.so
の1行だけ書いたファイルを作成して、保存。
sudo /sbin/chkconfig memcached on
で、デーモンとして登録しておくと便利です。
ラッパクラス
peclの関数をそのまま利用してもいいのでしすが、ラッパ関数を作成してもいいかもです。僕はこんな感じのものを作成しました。MEMCACHED_SERVER_ADDR. MEMCACHED_SERVER_PORTは適当な値に置き換えてください。多分localhost, 11211番ポートになるはず。
<?php class MemcacheManager { private static $cache = null; private function __construct(){} static function getInstance(){ if(MemcacheManager::$cache == null){ MemcacheManager::$cache = new Memcache; MemcacheManager::$cache -> connect(MEMCACHED_SERVER_ADDR, MEMCACHED_SERVER_PORT); } return MemcacheManager::$cache; } function get($key){ return MemcacheManager::$cache -> get($key); } function set($key, $var, $flag = null, $expire = CAKE_SESSION_TIMEOUT){ return MemcacheManager::$cache -> set($key, $var, $flag, $expire); } function close(){ return MemcacheManager::$cache -> close(); } } ?>
そうした後で、こんな感じで使います。
$cache = MemcacheManager::getInstance(); $cache -> set('name', 'jkondo'); echo $cache -> get('name'); // 'jkondo'
このMemcacheManagerみたいなクラスを用意しておくと、memcachedが公式にはサポートされていないCakePHP1.1なんかでもvendorsディレクトリあたりに入れておくと、そのまま使えてしまうので結構便利。ご参考ください。(1.2になるとCacheクラスに統合されているようですね)