LoginSignup
2
1

More than 5 years have passed since last update.

[Laravel] エンドポイントが自動で変わるHeroku Redisに適応する

Last updated at Posted at 2019-01-24

こちらの記事に書いてありますが、HerokuのRedisはたまにアップデートされた節にHostとポートが変わってしまうことがあります。
https://qiita.com/usagizmo/items/7c5a338e339ebffd7eba

アップデートされると、自動で環境変数REDIS_URLの値を書き換えますが、
Laravelは通常、HostやPostなどをわけて書くため、アップデートされるとある日突然Redisつながらなくなります。

そこで、Herokuが面倒見てくれるREDIS_URLに合わせて、Redisの接続方法を変更しましょう!

configの変更

まず、こちらがデフォルトのRedisのconfig

config/database.php
    'redis' => [

        'client' => 'predis',

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

        'cache' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => env('REDIS_CACHE_DB', 1),
        ],

    ],

REDIS_URLをパースする方法に変更します

config/database.php
    'redis' => [

        'client' => 'predis',

        'default' => [
            'host' => parse_url(env('REDIS_URL'), PHP_URL_HOST),
            'password' => parse_url(env('REDIS_URL'), PHP_URL_PASS),
            'port' => parse_url(env('REDIS_URL'), PHP_URL_PORT),
            'database' => env('REDIS_DB', 0),
        ],

        'cache' => [
            'host' => parse_url(env('REDIS_URL'), PHP_URL_HOST),
            'password' => parse_url(env('REDIS_URL'), PHP_URL_PASS),
            'port' => parse_url(env('REDIS_URL'), PHP_URL_PORT),
            'database' => env('REDIS_CACHE_DB', 1),
        ],

    ],

環境変数

HostやPasswordと分けてた環境変数をREDIS_URLにまとめます。
HerokuではRedisをアドオンすると自動で作られます。

ローカルでは以下のように設定します

REDIS_URL=redis://[HOST]:[PORT]

ユーザやパスワードの設定が必要ならこうなります

REDIS_URL=redis://[USER]:[PASSWORD]@[HOST]:[PORT]
2
1
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
2
1