为什么要这样做?

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

在使用的过程中觉得这个默认的设置挺不合理,因为当你在执行命令 PHP artisan cache:clear 的时候,会把 Session 也连带清除了,导致所有用户需要重新登录。

Session 存储的其他选择:
  • file - 存储在文件中,读取太频繁,磁盘存储比起内存存储速度没法比,为了方便,开发时可以随便玩一玩,生产环境不建议使用;
  • cookie - Session 里存放的是信息太多,Nginx 默认配置下配合 PHP-FPM,经常报 502,不建议使用;
  • database - 不建议存储在数据库中,因为读取太频繁,会拖累数据库服务器数据存储的业务,读取是内存缓存服务器的强项;
  • apc - 可用于小型程序缓存,不过不支持集群,所以也不建议使用;
  • array - 建议只用于单元测试中使用;
  • memcached - 专业内存缓存服务器,可惜只支持最大 30 天的缓存时间,请见 Laravel 会话使用 Memcached 踩到的坑,也就是说用户 30 天后就得重新登录,在我们的用例中,不适用;

上面的总结可以看来,Redis 在配置好多数据库的情况下,还是最好的 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

如果不会就大功告成了。

Laravel 下配置 Redis 让缓存、Session 各自使用不同的 Redis 数据库的更多相关文章

  1. c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具

    c#实例化继承类,必须对被继承类的程序集做引用   0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...

  2. Laravel 5.4+Vue.js 初体验:Laravel下配置运行Vue.js

    生产材料PHP:PHP 5.6+Laravel 5.4:https://github.com/laravel/laravel/releases/Composer:http://getcomposer. ...

  3. Window环境下配置Redis服务的方法及查看缓存数据的工具介绍

    工具下载位置:http://pan.baidu.com/s/1hqVh1f2,包括服务端配置以及查看缓存的工具. 服务端是以服务的形式运行,将Redis服务端解压到某个目录,然后执行cmd执行命令: ...

  4. Django中配置用Redis做缓存和session

    django-redis文档: http://django-redis-chs.readthedocs.io/zh_CN/latest/# 一.在Django中配置 # Django的缓存配置 CAC ...

  5. redis来共享各个服务器的session,并同时通过redis来缓存一些常用的资源,加快用户获得请求资源的速度(转)

    时间过得真快,再次登录博客园来写博,才发现距离上次的写博时间已经过去了一个月了,虽然是因为自己找了实习,但这也说明自己对时间的掌控能力还是没那么的强,哈哈,看来还需不断的努力啊!(这里得特别说明一下本 ...

  6. django url配置-反向解析-视图函数-HttpRequest对象-HttpResponse对象-cookies-session-redis缓存session

    """ --视图概述:-- 作用:视图接受WEB请求,并响应WEB请求 本质:视图就是一个python中的函数 响应: 1.网页: 一.重定向 二.错误视图 400,50 ...

  7. spring配置redis注解缓存

    前几天在spring整合Redis的时候使用了手动的方式,也就是可以手动的向redis添加缓存与清除缓存,参考:http://www.cnblogs.com/qlqwjy/p/8562703.html ...

  8. 项目总结10:通过反射解决springboot环境下从redis取缓存进行转换时出现ClassCastException异常问题

    通过反射解决springboot环境下从redis取缓存进行转换时出现ClassCastException异常问题 关键字 springboot热部署  ClassCastException异常 反射 ...

  9. Django分别使用Memcached和Redis作为缓存的配置(Linux环境)

    1 使用memcached 1.1 安装memcached 安装(Linux) sudo apt install memcached 启动 #方式一: service memcached start ...

随机推荐

  1. bzoj 1568 [JSOI2008]Blue Mary开公司 超哥线段树

    [JSOI2008]Blue Mary开公司 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1808  Solved: 639[Submit][Sta ...

  2. MySQL 5.6 for Windows 解压缩版配置安装(转载)

    原文地址:点击这里 MySQL是一个小巧玲珑但功能强大的数据库,目前十分流行.但是官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的.很多人下了zip格式的解压发现没有setup.exe ...

  3. tools:context=".MainActivity的作用

    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content& ...

  4. matlab向量的排序(自写函数)

    function a_ed = arraysort(a) %冒泡排序法 for i =1:length(a)-1 %进行多少次比较 for j=1+i:length(a) %每次求出最大的数,放在最后 ...

  5. 给定一个数字n,不用for循环实现输出数组 [1,2,3,4,...,n]

    一.for循环方式实现输出[1, 2, 3, ..., n] var n = 5; function test(n){ var arr=[]; for( var i = 1; i <= n; i ...

  6. 51Nod 1009 数字1的个数 | 数位DP

    题意: 小于等于n的所有数中1的出现次数 分析: 数位DP 预处理dp[i][j]存 从1~以j开头的i位数中有几个1,那么转移方程为: if(j == 1) dp[i][j] = dp[i-1][9 ...

  7. 【C++ STL】Deques

    1.结构 容器deque和vector非常相似,也是采用动态数组来管理元素,提供随机存取,有着和vector几乎一样的接口,不同的是deque的动态数组头尾都开放,因此可以在头尾都可以进行快速的安插和 ...

  8. bzoj 1452: [JSOI2009]Count ——二维树状数组

    escription Input Output Sample Input Sample Output 1 2 HINT ———————————————————————————————————————— ...

  9. bzoj 1705: [Usaco2007 Nov]Telephone Wire 架设电话线——dp

    Description 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设在已有的N(2 <= ...

  10. C语言分割字符串函数strtok

    在编程过程中,有时需要对字符串进行分割.而有效使用这些字符串分隔函数将会给我们带来很多的便利. 下面我将在MSDN中学到的strtok函数做如下翻译. strtok :在一个字符串查找下一个符号 ch ...