1. 安装 predis 包,也可以选择其他包,如 phpredis。
composer require predis/predis
2. 配置?config\database.php 文件,添加 session 连接配置。
'redis' => [
'client' => env('REDIS_CLIENT', 'predis'), // <-- 默认为 phpreids,改为 predis
'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'),
'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'),
],
'default' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_DB', '0'),
],
'cache' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_CACHE_DB', '1'),
],
// 添加如下设置,可按项目需求更改:
'session' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_SESSION_DB', '2'),
],
],
? ? 如果出现?Class 'Redis' not found?错误,请将上述配置中客户端改为 predis。
// 更改前默认配置为 phpredis
'client' => env('REDIS_CLIENT', 'phpredis'),
// 更改为 predis
'client' => env('REDIS_CLIENT', 'predis'),
3. 配置?config\session.php 文件
? ? driver 和 connection 配置
// 更改前
'connection' => env('SESSION_CONNECTION', 'null'),
// 更改后 将 null 改为 session
'connection' => env('SESSION_CONNECTION', 'session'),
/* -------------------------------------------------- */
// 更改前
'driver' => env('SESSION_DRIVER', 'file'),
// 更改后 将 file 改为 redis
'driver' => env('SESSION_DRIVER', 'redis'),
4. 更改 .env 配置文件设置
SESSION_DRIVER=redis
REDIS_SESSION_DB=2 // 这里的 2 可以替换成你的项目的数据库编号,Redis有16个库。
5. 如果出现?Session store not set on request. 错误的解决办法
将?\Illuminate\Session\Middleware\StartSession::class, 添加进?app\Http\Kernel.php 文件的
全局中间件:?protected $middleware,
或者添加到 web 中间件:?protected $middlewareGroups
添加到全局中间件可以不用做其他操作,如果添加到 web 中间件,需要在 Route 里添加中间件组才可消除错误。
例:?
Route::middleware('web')->get('/test', function (Request $request) {
// 你的代码段
});
完成!
|