CakePHPのキャッシュエンジンはRedisを利用することが出来る
Cacheクラス経由でRedisを使うためにはphpredisが必要
CakePHP2.4.7でインメモリキャッシュとしてRedisを使う。
基本的な使い方は、memcachedをCakephpで利用の記事でエントリーしたやり方と同じ感じになる。CakePHPに備わっているキャッシュエンジンのストレージをmemcachedからRedisに変更する作業を行う。
Redis利用の前提条件としては、サーバ側でphpredis拡張が有効になっていないといけない。その作業については、本ブログの
Windows Serverカテゴリ
内でWindowsOSに特化した内容の記事を公開してあるので参考にしていただきたい。
core.phpを設定
CakePHPのcore.phpには以下の設定を追加した。
Cache::config('default', array( 'engine' => 'Redis', ));
上の設定だけでもRedisサーバに対してデータを追加することが可能。
Cache::config('default', array( 'engine' => 'Redis', 'server' => '127.0.0.1', 'port' => 6379, ));
Redisサーバのipアドレスとポート番号を指定する必要がある場合は、上のやり方で接続先を指定することができる。
キャッシュデータの読み書き
CakePHPのキャッシュエンジンを利用していれば、ストレージの種類に関わらずデータの読み書きは統一的に書くことができる。
Cache::write('wanted', 'wanted_value'); $r = Cache::read('wanted'); var_dump($r);
キャッシュデータに有効期限を設定する場合は、
Cache::write('wanted', 'wanted_value', 300);
3番目の引数にdurationを設定することでキャッシュデータの期限を設定可能。
数値の加減
CakePHPのキャッシュエンジンにはカウンタAPIが備わっている。このAPIを利用できるストレージは
- APC
- Redis
- Memcache
に限定されている。
if( !Cache::read('wanted_count') ) { Cache::write('wanted_count', 5); } //Cache::decrement('wanted_count'); Cache::increment('wanted_count'); var_dump(Cache::read('wanted_count'));
incrementとdecrementを利用してサイトの投票機能を実装することが出来る。