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