Laravel 会话管理:Redis 驱动配置 2 个改进

问题

在 Laravel 中,该如何配置来使用 Redis 存储会话数据 ?

回答

要在 Laravel 中使用 Redis 作为会话存储驱动,首先需要用 Composer 安装 predis/predis 扩展包:

$ composer require predis/predis

然后在 database 配置文件中配置 Redis 连接信息。

config\database.php

<?php

use Illuminate\Support\Str;

return [

    // 省略

    /*
    |--------------------------------------------------------------------------
    | Redis Databases
    |--------------------------------------------------------------------------
    |
    | Redis is an open source, fast, and advanced key-value store that also
    | provides a richer body of commands than a typical key-value system
    | such as APC or Memcached. Laravel makes it easy to dig right in.
    |
    */

    'redis' => [

        'client' => env('REDIS_CLIENT', 'predis'),

        'options' => [
            'cluster' => env('REDIS_CLUSTER', 'predis'),
            'prefix' => Str::slug(env('APP_NAME', 'laravel'), '_').'_database_',
        ],

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

        'cache' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => env('REDIS_CACHE_DB', 1),
        ],
    ],
];

可以看到 database 配置文件包含有 redis 相关配置,在 cache 项后新增个 session 配置项:

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

然后,修改会话配置文件(位于 config/session.php 文件中)。

修改 driver 配置项:

'driver' => env('SESSION_DRIVER', 'file'),

将默认驱动 file 修改成 redis

'driver' => env('SESSION_DRIVER', 'redis'),

修改 connection 配置项:

'connection' => env('SESSION_CONNECTION', 'session'),

这样,我们就完成了使用 Redis 存储会话数据的配置工作了。

参考

*HTTP 会话机制·配置

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!