ブラックボックス

プログラミングのノウハウやライフハックをどんどん投稿していきたい

Aug 1, 2017 - 2 minute read - ノウハウ

【Laravel】セッション管理にRedisを使用する

ひとまずLaravelでRedisを使ってみる。
とりあえず、なのでRedisはアプリサーバと同じ所にインストール。
Laravelは既にインストールされている前提。

環境:

  • CentOS:7.2
  • Laravel:5.4.30

参考: CentOS7にyumでRedisを入れる
Laravel 5.3でセッション管理にredisを使用する方法
Laravel Redis
Laravel 5.4 Redis

Redisをyumでインストール

$ sudo yum install redis

====================================================================================================
 Package                 Arch                  Version                    Repository           Size
====================================================================================================
Installing:
 redis                   x86_64                3.2.3-1.el7                epel                527 k
Installing for dependencies:
 jemalloc                x86_64                3.6.0-1.el7                epel                105 k

Transaction Summary
====================================================================================================
Install  1 Package (+1 Dependent package)

Total download size: 631 k
Installed size: 2.6 M
Is this ok [y/d/N]:

インストールが出来たか確認+起動

$ redis-cli -v
redis-cli 3.2.3
$ sudo systemctl start redis.service
$ sudo systemctl enable redis.service
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.
$ redis-cli ping
PONG

「redis-cli ping」を打って「PONG」が返ってくればOK。

predisのインストール

$ cd /your/project/path
$ composer require predis/predis

※/your/project/path はLaravelのインストールディレクトリ

設定変更

$ vi .env

SESSION_DRIVER=file
 ↓
SESSION_DRIVER=redis

「file」を「redis」に書き換え。

動作確認

その後ブラウザからLaravel標準の認証機能でログインを実施。
ログイン後のセッションを確認。

確認後、再度ターミナルへ。

$ redis-cli
127.0.0.1:6379> keys *
1) "laravel:LyAZZAYisVbOfZREVAVHDUO1DfRnNk9ixRJth3jx"

$ ls -a storage/framework/sessions/
.  ..  .gitignore

Redisにセッションが格納されていること、セッションファイルが保存されていないことを確認。

ついでにRedisが使われていることを改めて確認。
まずはRedisのレコードを削除。

127.0.0.1:6379> keys *
1) "laravel:4gcbEbW2jaijLBuyHVCupUYQkB4DJN36sJX2uLX7"
127.0.0.1:6379> del laravel:4gcbEbW2jaijLBuyHVCupUYQkB4DJN36sJX2uLX7
(integer) 1
127.0.0.1:6379> keys *
(empty list or set)

削除後にログイン後のブラウザを再読み込みし、ログイン画面に戻されることを確認したので、Redisが使われている。