以前に別の記事で 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を利用することでインメモリデータベースの環境も簡単に構築できます。