Laravel 下配置 Redis 让缓存、Session 各自使用不同的 Redis 数据库
为什么要这样做?
默认情况下,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
如果不会就大功告成了。
dancer::dancer::dancer::dancer: :dancers::dancers::dancers::dancers:
本帖已被设为精华帖!
本帖由 Summer
于 8年前 加精
怒赞,还不知道memcached 有这个坑呢
:+1:
:+1:
FatalErrorException in Database.php line 62:
Class 'Predis\Client' not found
出现了一个问题。。查看了composer文件和app.config都没有问题。。
学习了,我的是几个laravel项目共享的session和cache ,清理cache的时候的确很不方便
@Gabriel
composer require predis/predis
@orvice 已解决,谢谢。
@Summer 帅得一.....
:thumbsup:
mark
:+1: 学习了
@512817655 我这可以啊。
请问.env在哪
@Summer 前几天在弄事件广播和队列的时候,发现当同时用到 redis 作为驱动器的时候会有冲突,是不是也可以用这个方式解决?
我参考了下面网页资料,但是好像没有成功
https://laracasts.com/discuss/channels/lar...
mark
马克
按照您这样的配置,为什么session的值存储不到redis里面,是不是哪里还需要配置?
正好需要,哈哈~~~
一搜一个准儿
瞬间关注 支持!
api服务,不设置session的情况下,使用php artisan会报错
Redis connection [session] not configured.