Laravel使用redis作为session驱动

1. 安装 predis

Laravel默认使用的 redis clientprediscomposer 安装:

1
composer require predis/predis

2. 修改数据库配置

打开 config/database.php ,我们可以看到默认配置为:

1
2
3
4
5
6
7
8
9
10
11
12
'redis' => [

'client' => 'predis',

'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],

],

我们添加一些内容,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'redis' => [

'client' => 'predis',

'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
'session' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 1,
],

],

这里不做修改其实也是可以跑的。

这样做的好处是,CacheSession 可以分离开来。我们知道,一个运行中的项目,清理Cache是一个很正常的操作,如果不分离,保持登录态的所有用户将被强制登出

redis 不太了解的小伙伴可能不知道 database 的值为何用0,1,这是因为 redis 默认有16个数据库,编号为0~15,可以实现对不同功能的隔离作用。

3. 修改Session配置

打开 config/session.php ,我们可以看到默认配置有这么一行:

1
'connection' => 'null',

我们将其改为 session 即可:

1
'connection' => 'session',

此处的 session 对应的是我们上一步的 session

4. 修改ENV配置

1
SESSION_DRIVER=file

修改为

1
SESSION_DRIVER=redis

即可。