Laravelのセッション管理をRedisに変更

以前に別の記事で Laravelのセッション管理をデータベースに変更する手順 をご紹介しましたが、今回はその派生でインメモリデータベースであるRedisを利用する手順をご紹介致します。

基本的にはLaravelの公式ドキュメントに記載されている通りです。
Laravelに、利用するRedisへの接続情報を定義し、セッション管理の設定をRedisに変更します。
https://readouble.com/laravel/5.5/ja/redis.html

なお、今回使用するRedisはAWSのElastiCacheで構築します。
https://aws.amazon.com/jp/elasticache/

手順

ElastiCacheの構築

ElastiCacheの利用手順 の記事でElastiCacheの構築の流れをご紹介しておりますので、流れに沿って構築します。

Predisのインストール

LaravelでRedisを使用するために必要となりますので、公式ドキュメントに沿ってComposerでインストールします。

composer require predis/predis

Redisの接続情報の設定

config/database.php に追記します。
実際の接続情報は後述の.envファイルで定義します。
(今回はクラスタを使った定義となります。)

    'redis' => [
        'client' => 'predis',
        'options' => [
            'cluster' => 'redis',
        ],
        'clusters' => [
            'default' => [
                [
                    'host' => env('REDIS_HOST', '127.0.0.1'),
                    'password' => env('REDIS_PASSWORD', null),
                    'port' => env('REDIS_PORT', 6379),
                    'database' => 0,
                    'read_write_timeout' => env('REDIS_READ_WRITE_TIMEOUT', 60),
                ]
            ],
        ],
    ],

セッションドライバの設定

config/session.php は特に変更しません。
デフォルトで以下のようになっているかと思いますので、後述の.envファイルで定義します。

'driver' => env('SESSION_DRIVER', 'file'),

.envファイルの設定

.env に以下を追記、変更します。
Redisの設定は、ElastiCacheのクラスターのエンドポイント情報を記載します。

SESSION_DRIVER=redis

REDIS_HOST=ElastiCacheのクラスターのエンドポイント情報を記載します。
REDIS_PORT=ElastiCacheのポート番号を記載します。
REDIS_READ_WRITE_TIMEOUT=60等、任意の値を記載します。

これでセッションデータがElastiCacheに保存されるようになります。

まとめ

セッションを使ったWebアプリケーションを複数台のWebサーバで動かす際には、セッションの管理方法をどうするか、検討する必要が出てきます。
そのような場合に、データベースでの管理も含めて、Laravelではセッション管理方法を比較的簡単に変更できます。
また、AWSのElastiCacheを利用することでインメモリデータベースの環境も簡単に構築できます。


--------------------------
システム開発のご要望・ご相談はこちらから

コメントを残す

メールアドレスが公開されることはありません。