LoginSignup
5
2

More than 5 years have passed since last update.

Heroku上のLaravelでRedisを使う

Posted at

Heroku上に公開するLaravelアプリケーションでキャッシュサーバとしてRedisを使う場合の方法について。

前提

HerokuにはRedisのアドオンがいくつかありますが、Heroku Redisを使うことを前提にします1

アドオンの導入

まずheroku-redisアドオンを有効にしておきます。

heroku addons:create heroku-redis:hobby-dev

アドオンを有効にするとアプリケーションに環境変数 REDIS_URL がセットされます。

REDIS_URL.png

セキュリティのためほぼモザイクにしていますが、 redis://USERNAME:PASSWORD@HOST:PORT の形式になっています。

URLを分解する

LaravelのRedisを含むデータベース設定はURLはそのまま使えないので、分解することになります。

database.php
    'redis' => [

        'cluster' => false,

        'default' => [
            'host' => env('REDIS_HOST', 'localhost'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 0,
        ],

    ],

標準で2上記のように環境変数をセットする形になっているので、URLを分解し環境変数にセットします。
このため、database.phpの <?php の直後に下記を加えます。

database.php
if (getenv('REDIS_URL')) {
    $url = parse_url(getenv('REDIS_URL'));

    putenv('REDIS_HOST='.$url['host']);
    putenv('REDIS_PORT='.$url['port']);
    putenv('REDIS_PASSWORD='.$url['pass']);
}

これを加えてデプロイするとHeroku上でRedisが使えるようになっているはずです。


  1. ほかのアドオンでもおそらく似たようなやり方になると思われます。たとえばRedis To Goというアドオンならば環境変数 REDISTOGO_URL を参照することになるようです。 

  2. GitHubのLaravelのリポジトリがこうなっているため 

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2