Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@kuropen

Heroku上のLaravelでRedisを使う

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

2
Help us understand the problem. What is going on with this article?
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
kuropen
Androidアプリ開発からキャリアスタートし、現在はPHPを中心としたWeb開発を行っています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?