Help us understand the problem. What is going on with this article?

Heroku上のLaravelでRedisを使う

More than 1 year has passed since last update.

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のリポジトリがこうなっているため 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away