Help us understand the problem. What is going on with this article?

Laravel5.5: セッションの保存にRedisを使う (ローカル環境)

More than 3 years have passed since last update.

セッションの保存先を、デフォルトのファイルからRedisへ変更します。
ただし、これは必須ではありません。保存先がファイルのままでも全く問題ありません。
:link: Redis

親記事

Laravel 5.5で基本的なCRUDを作る - Qiita

Redisのインストール

まずは元となるRedisとGUIツールのRDMをインストールします。詳しくは下記を。
:link: (過去記事) Windows: PhpRedisとPredisの使用準備

これ以降は下記の接続設定を前提として進めます。

  • ホスト: 127.0.0.1
  • ポート: 6379
  • 認証: なし

Predis

使用準備

PowerShell
# Composerでインストールする
> composer require predis/predis
.env
# セッションの保存先をfileからredisへ変更
SESSION_DRIVER=redis

# デフォルトのままでOK
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

動作確認

セッションをファイルに保存していた時と同じように、ごく普通にsessionヘルパを使えます。
下記のようにルートを追加してブラウザでhttp://(ドメイン)/test-sessionにアクセスすると、こんにちはこんにちは!!と表示されます。

routes/web.php
Route::get('test-session', function () {
    session(['foo' => 'こんにちはこんにちは!!']);
    return session('foo');
});

RDMで確認します。
下記のようにlaravel:<セッションID>というキー名で、Laravel内で使われている他のセッションとともに保存されています。

001.png

PhpRedis

PhpRedis自体のインストールについては、先ほども挙げた下の記事をご覧ください。
:link: (過去記事) Windows: PhpRedisとPredisの使用準備

Laravelで使用するには、clientphpredisに変えるだけです。

config/database.php
     'redis' => [

-        'client' => 'predis',
+        'client' => 'phpredis',

動作確認のため、先ほどのページをリロードしてみてください。
以前と変わらずにセッションを使えるはずです。
試しにphp.iniでPhpRedisを無効にしてApacheを再起動してページをリロードすると今度はエラーとなるので、セッションの保存にPredisではなくPhpRedisが使われていることが分かります。

sutara79
宮崎 雄策。1979年生まれ。PHP(Laravel)、 JavaScript(jQuery)、英語を勉強中の文系Webプログラマ。
https://ja.gravatar.com/sutara79
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away