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