以前の記事でLaravel 6でのセッション管理に、NoSQLデータベースのAmazon DynamoDBを使いました。自分は普段、Redisを使ってますので、ついでに導入手順をメモしておきます。
環境
- Ubuntu 18.04
- PHP 7.4
Redis Serverのインストール
導入には必要ないですが、動作検証に必要なので、ローカルに立てます。
$ sudo apt install redis
インストールできたら、サービスが動作しているか確認しておきます。
$ sudo systemctl status redis
● redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-06-23 02:28:13 UTC; 55s ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Main PID: 7686 (redis-server)
Tasks: 4 (limit: 426)
CGroup: /system.slice/redis-server.service
└─7686 /usr/bin/redis-server 127.0.0.1:6379
Redis拡張のインストール
PECLでインストールします。
$ sudo pecl install redis
コマンドを実行すると、以下のようにシリアライズや圧縮に関する拡張のサポートを有効にするか聞かれます。
enable igbinary serializer support? [no] :
enable lzf compression support? [no] :
enable zstd compression support? [no] :
こだわりがなければ、何も入力せずEnter連打(全てno)でも、使用に問題ありません。今回はEnter連打します。
Redis拡張をインストールできたら有効にします。以下のファイルを作成します。
/etc/php/7.4/mods-available/redis.ini
; configuration for php redis module
; priority=99
extension=redis.so
ファイルを作成したら、以下のコマンドを実行します。
$ sudo phpenmod redis
$ sudo systemctl restart php7.4-fpm
これでRedis拡張が有効になったはずです。php -m
を実行して、[PHP Modules]にredisが存在することを確認してください。
Laravelの設定
.env
ファイルに以下を設定します。
.env
SESSION_DRIVER=redis
ローカルのredisサーバーに接続する場合はこれだけです。redisサーバーをローカルから変更する場合は、以下を必要に応じて変更します。
.env
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
動かしてみる
動作確認方法はDynamoの記事と同じなので、画面等は省略します。Redisサーバー上のデータだけ示します。
データ保存前
データは何もありません。
127.0.0.1:6379> keys *
(empty list or set)
データ保存後
シリアライズされたデータが確認できます。
127.0.0.1:6379> keys *
1) "laravel_database_laravel_cache:Y12VGSXM2quk0JaG233FBVFv3woONGF2HN3XeFp6"
127.0.0.1:6379> get laravel_database_laravel_cache:Y12VGSXM2quk0JaG233FBVFv3woONGF2HN3XeFp6
"s:219:\"a:4:{s:6:\"_token\";s:40:\"aOt5pkkDtDj1McCGi7fzkqXTqHM5Y36DbCBx5D8o\";s:9:\"_previous\";a:1:{s:3:\"url\";s:38:\"https://dev.tdomy.com/store?sdata=hoge\";}s:6:\"_flash\";a:2:{s:3:\"old\";a:0:{}s:3:\"new\";a:0:{}}s:5:\"sdata\";s:4:\"hoge\";}\";
まとめ
Laravel6 でセッション管理にRedisを使うための手順でした。セッション以外でもキャッシュやジョブ管理にも簡単に使えるので、個人的には使用頻度高いです。