イントロダクション

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);

注目: RadisのキャッシュセッションドライバーはLaravelに含まれています。

パイプライン

多くのコマンドを一度にサーバーへ送る必要がある時はパイプラインを使用すべきです。pipelineコマンドを使ってください。

大量のコマンドをサーバーへ送信

Redis::pipeline(function($pipe)
{
    for ($i = 0; $i < 1000; $i++)
    {
        $pipe->set("key:$i", $i);
    }
});