在Heroku上使用Laravel框架来使用Redis

关于在Heroku上发布Laravel应用程序并将Redis用作缓存服务器的方法。

前提的中文释义是指一个事情发生的必要条件或基本前提。

在Heroku上有几个Redis附加组件可用,但我们假设使用Heroku Redis1。

安装插件

首先启用Heroku Redis附加组件。

heroku addons:create heroku-redis:hobby-dev

启用插件后,应用程序将设置环境变量REDIS_URL。

REDIS_URL.png

出于安全考虑,几乎全部是模糊的,但是它符合 redis://USERNAME:PASSWORD@HOST:PORT 的格式。

将URL进行分解

在包含Redis的Laravel数据库设置中,因为URL无法直接使用,所以需要进行拆分。

    'redis' => [

        'cluster' => false,

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

    ],

由于根据标准,环境变量是以设置URL进行分解并设置到环境变量中的形式,因此我们将在database.php的<?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上时,应该能够在Heroku上使用Redis。

其他附加组件可能也会采用类似的方法。例如,如果是Redis To Go附加组件,可能会引用环境变量REDISTOGO_URL。 ↩

由于GitHub上的Laravel仓库如此设定。 ↩

bannerAds