イントロダクション
Redisはオープンソースの進歩的なキー・値保存システムです。キーに文字列、ハッシュ、リスト、セット、ソート済みセットが使用できるため、データ構造サーバーとしてしばしば取り上げられます。
注意:PECLでRedis PHP拡張をインストールしている場合、
app/config/app.php
ファイルのRedisエイリアスをリネームする必要があります。
設定
アプリケーションのRedis設定はapp/config/database.phpファイルにあります。このファイルの中にredis配列があり、アプリケーションで使用されるRadisサーバーの設定を含んでいます。
'redis' => array(
'cluster' => true,
'default' => array('host' => '127.0.0.1', 'port' => 6379),
),
デフォルトサーバー設定は、開発時には十分でしょう。ですが、ご自由に自分の環境に合わせてこの配列を変更してください。ただ各Redisサーバーに名前を与え、使用するホストとポートを指定するだけです。
cluster
オプションはLaravel
Redisクライアントに対し、Redisノード間でクライアントサイドで共有することを伝えます。これによりノードをプールしたり、利用できるRAMの大きさのキャッシュが利用できます。しかし注意すべきなのは、クライアントサイドの共有ではフェイルオーバーが処理されないことです。ですから主な使い方はキャッシュデーターを他のプライマリーのデーター域から使用できるようにすることでしょう。
Redisサーバーが認証を求めている場合、Redisサーバー設定にpassword
キー/値のペアを指定してください。
使用法
Redis::connection
メソッドを呼び出すだけで、Redisインスタンスが取得されます。
$redis = Redis::connection();
これによりデフォルトのRedisサーバーのインスタンスが取得できます。もしサーバーをクラスタ化していない場合、Redis設定で定義されている特定のサーバーを取得するには、connection
メソッドにサーバー名を渡す必要があります。
$redis = Redis::connection('other');
一度Redisクライアントのインスタンスを取得すれば、どんなRedisコマンドでも、発行できます。LaravelではコマンドをRedisサーバーに渡すため、マジックメソッドが使用できます。
$redis->set('name', 'Taylor');
$name = $redis->get('name');
$values = $redis->lrange('names', 5, 10);
コマンドへの引数はシンプルにマジックメソッドに渡されていることに注目してください。もちろんマジックメソッドを使用したくなければ、サーバーにコマンドを送信するためcommand
メソッドを使用できます。
$values = $redis->command('lrange', array(5, 10));
コマンドをデフォルト接続に対し実行吸う場合は、静的なマジックメソッドをRedis
クラスに対し使用してください。
Redis::set('name', 'Taylor');
$name = Redis::get('name');
$values = Redis::lrange('names', 5, 10);
注目: RadisのキャッシュとセッションドライバーはLaravelに含まれています。
パイプライン
パイプラインは多くのコマンドを一度にサーバーへ送る必要がある時に使用すべきです。使用を開始するにはpipeline
コマンドを使ってください。
多くのコマンドをサーバーに送る
Redis::pipeline(function($pipe)
{
for ($i = 0; $i < 1000; $i++)
{
$pipe->set("key:$i", $i);
}
});