問題及解決思路
更新完專案,有時需要命令清除快取,結果使用者登入資訊也同時丟失,好尷尬~
php artisan cache:clear
laravel 專案中,session 驅動可以配置多種,但 redis 是絕大多數人的選擇。
SESSION_DRIVER=redis
redis 服務自身可提供多達 16 個資料庫,laravel 中預設使用資料庫0 來儲存快取和 session。
其中,laravel 清除快取命令,預設清除的就是redis 的 index 為 0 的資料庫,因此,我們經過簡單的配置,即可實現快取與 session 分別清除的效果。
解決方案
1. 進入 config/database.php,向 redis 選項內增加配置:
'redis' => [
'client' => 'predis',
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,//使用 redis 的 0 資料庫
],
'session' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 1,//使用 redis 的 1 資料庫
],
//還可以增加其他配置,例如 queue
],
2. 進入 config/session.php,找到 connection 鍵改為:
'connection' => 'session'
大功告成,去 php artisan cache:clear
試下吧 。
本作品採用《CC 協議》,轉載必須註明作者和本文連結