为什么要这样做?

默认情况下,redis 服务会提供 16 个数据库,laravel 使用数据库 0 (请见 redis 文档)作为缓存和 session 的存储。

在执行命令 php artisan cache:clear 清除缓存时,会把 session 也连带清除了,可以通过以下设置来避免这个问题。

 

开始配置

我们的目的是让缓存,也就是默认的 redis 存储到 0 号数据库,session 存储在 1 号数据库。

 

1. 配置 session redis 数据库

修改 config/database.php,在 redis 选项内增加 session 选项,并把 database 修改为 1:

'redis' => [

   'cluster' => false,

   'default' => [
       'host'     => env('redis_host', 'localhost'),
       'password' => env('redis_password', null),
       'port'     => env('redis_port', 6379),
       'database' => 0,
   ],

   'session' => [
         'host'     => env('redis_host', 'localhost'),
         'password' => env('redis_password', null),
         'port'     => env('redis_port', 6379),
         'database' => 1,
   ],
],

 

 

2. 指定 session 使用数据库

修改 config/session.php ,把下面这一行:

'connection' => null,

改为:

'connection' => 'session',

 

3. 开始使用

修改 .env 文件的 session_driver 选项为 redis,开始应用上。

session_driver=redis

 

4. 测试一下

执行以下命令后检查下是否退出登录:

php artisan cache:clear

如果不会就大功告成了。