【メモ】Redisについて
Redisについての雑多なメモです。
特徴
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.
- Key-Valueストレージで、NoSQLに分類される
- そういう文脈上キャッシュというよりはデータストレージ
- 最大の特徴は構造を持つデータ(リストやオブジェクト)をそのまま保存できること
- パフォーマンスはmemcachedにremarkably similarらしい
- データは定期的にディスクに保存されるためサーバが落ちてもデータが残るし、再起動時にはロードされる
- データのサイズに制限はないが、全体サイズがメモリ容量に収まる必要がある、あるいは削除の設定をする必要がある
導入
// ダウンロード
$ wget http://download.redis.io/redis-stable.tar.gz
$ tar xzf redis-stable.tar.gz
$ cd redis-stable
// ビルド
$ make
// 起動
$ src/redis-server
PHPでの利用方法
PHPでRedisを利用する際は、以下の2つがメジャー。
どちらのクライアントも基本的にRedisのコマンド名と同じメソッドが定義されているので利用法に大きな差異はないが導入方法が異なる。また、phpredisはextensionなのでpredisよりも高速で動作することが予想される。
predis
ライブラリなのでcomposer経由でインストール。
{ "require": { "predis/predis": "^1.1.1" } }
アプリケーション側からは以下のように利用する。
<?php require __DIR__ . '/../vendor/autoload.php'; use Predis\Client as PredisClient; try { $redis = new PredisClient(); } catch (Exception $e) { die($e->getMessage()); } // 値の設定 $redis->set('message', 'Hello world'); // 値の取得 $value = $redis->get('message'); print($value); // Hello world
phpredis
こちらはextensionとなっているので、
ダウンロード & ビルド → php.iniにモジュールの登録
の手順を踏む必要がある。
- ダウンロード & ビルド
$ git clone git://github.com/nicolasff/phpredis.git $ cd phpredis $ phpize // エクステンションを追加する際に,phpを最初からコンパイルし直す必要なく,追加するためのコマンド(*) $ ./configure $ make && make install
(*) Redisの使い方
- モジュールの登録
ビルドされたredis.so
というファイルをphpのextensionが入っているディレクトリにコピーし、php.iniに登録する。
$ cp modules/redis.so {php-config–extension-dir} $ sudo echo “extension=redis.so” > /etc/php5/conf.d/redis.ini
アプリケーション側からは以下のように利用する。
<?php $redis = new Redis(); // extensionとして登録しているからロードせず使える $redis->connect('127.0.0.1',6379); $redis->set('dog', 'bow-bow'); $res = $redis->get('dog'); echo $res . PHP_EOL; $redis->close();