phpredisを導入した環境におけるlaravel5のRedis設定


laravel5でRedisを扱うときにハマったのでメモとして残します。

前準備

composerでpredis/predisをインストールします。

$ composer require predis/predis

database.phpの編集

以下ではredisサーバはインストールしてあり,起動済みとします.

database.phpにredisの設定をする項目があるので,環境に合わせて設定しますが,デフォルトでRedisを動作させている場合はそのままの設定でかまいません.

database.php
'redis' => [

    'cluster' => false,

    'default' => [
        'host' => '127.0.0.1',
        'port' => 6379,
        'database' => 0,
    ],
],

次にコントローラに以下の記述を追加します.

RedisController.php
<?php namespace App\Http\Controllers;

use Illuminate\Support\Facades\Redis;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class RedisController extends Controller {

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        //
        $redis = \Illuminate\Support\Facades\Redis::connection();

        $result = $redis->get('keys');

        return $result;
    }
}

ここで

use Illuminate\Support\Facades\Redis;

はphpredisを導入していない場合は,

use Redis;

で良いのですが,どうやらlaravel5のドキュメントに記述してあるように,

注意: PECLでRedis PHP拡張をインストールしている場合、config/app.phpファイルのRedisエイリアスをリネームする必要があります。

という設定をするべきなのですが,おそらくlaravelで使うredisのクラスの読み込みとphpredisの読み込みが同時に起こってしまうためにエラーを吐くので,Redisエイリアスをリネームしてもよかったのですが,直接laravelのクラスを指定しました.

また,

$redis = Redis::connection();

が本来の記述の仕方ですが,

use Illuminate\Support\Facades\Redis;

に合わせて

$redis = \Illuminate\Support\Facades\Redis::connection();

としました.

これで無事にRedisの値を取得することができました.