CodeIgniterでmemcachedを使う

CIのバージョンは2.1.0でやった。

CIのMemcached キャッシングドライバは、PECLのmemcachedを使ってる(memcacheではない)ので要注意。
見事に動かなくてハマッたのでメモ。

libmemcachedが必要

のまえにgcc-c++が必要。

yum install gcc-c++
cd /usr/local/src
wget https://launchpad.net/libmemcached/1.0/1.0.4/+download/libmemcached-1.0.4.tar.gz
tar xf
cd libmemcached-1.0.4
./configure --prefix=/usr/local/libmemcached

make
make install

echo /usr/local/libmemcached/lib/ > /etc/ld.so.conf.d/libmemcached.conf
/sbin/ldconfig -v

PECLのmemcachedをいれる

pecl channel-update pecl.php.net
pecl download memcached
tar xf memcached-1.0.2.tgz
cd memcached-1.0.2
phpize
./configure --with-libmemcached-dir=/usr/local/libmemcached/
make
make install

vi php.ini
extension=memcached.so

httpdの再起動を忘れずに。

設定ファイルを準備

vi application/config/memcached.php
<?php
// 'memcached'の部分はネームスペースなので、複数の接続先がある場合にはネームスペースを変えて複数用意する。
$config['memcached'] = array(
    'hostname' => '127.0.0.1',
    'port'     => 11211,
    'weight'   => 1
);

使い方

<?php
$this->load->driver('cache', array('adapter' => 'memcached'));
$this->cache->memcached->is_supported();

$this->cache->save('hogehoge', $data);
$this->cache->get('hogehoge');
$this->cache->clean();


これでオッケー。