laravel配置Redis多个库的实现方法


Posted in PHP onApril 10, 2019

导语

经过编译安装和安装扩展之后,Redis 已经可以正常使用了。但是在 laravel 中还需要其他的操作。

安装扩展

要想在 laravel 中使用 Redis,还需要安装 predis 扩展。使用 composer require predis/predis 进行安装就可以了。

修改配置

  1. Redis 的配置在 config/database.php 文件,根据需求修改,我这里不需要改动;
  2. 设置 Cache 默认缓存为 Redis,在 .evn 文件中 CACHE_DRIVER=redis
  3. 设置 Session 的驱动为 Redis,在 .env 文件中 SESSION_DRIVER=redis

配置多个库

经过以上的配置后,多个服务都使用 Redis,如果都使用同一个库,这显然是不合理的。我们可以配置多个连接来解决这个问题。
Redis 默认有 16 个库,在服务器中设置 redis.confdatabase 值可以修改。

先来看下 config/database.php 的默认连接

'redis' => [

    'client' => 'predis',

    '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),
    ],
  
  ],

默认是有两个连接的,分别是 defaultcache。下面来看下 config/cache.php 中关于 Redis 的配置

'redis' => [
      'driver' => 'redis',
      'connection' => 'cache',
    ],

可以看到它的 connection 值是 cache,也就是使用 config/database.php 中 Redis 的 cache

下面修改 config/database.php 的 Redis,添加一个 session 的连接,如下

'redis' => [

    'client' => 'predis',

    '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),
    ],

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

  ],

接下来在 .env 中添加 SESSION_CONNECTION=session

测试

经过上面的操作,已经修改好了。总结下就是 default 使用的是 0 库,cache 使用的是 1 库,session 使用的是 2 库。

使用如下代码来测试下

/**
   * 测试 Redis 的存储
   */
  public function testRedis()
  {
    // Redis 门面
    Redis::setex('facades', 30, 'i am facades');
    // Cache
    Cache::put('cache', 'i am cache', now()->addMinute(30));
    // 因为 Cache 默认是 Redis,所有和上面语句相同
    // Cache::store('redis')->put('cache', now(), now()->addMinute(30));
  }

运行以上代码之后,在服务器中使用 redis-cli 来看下存储情况

laravel配置Redis多个库的实现方法

可以看到各个库的存储情况

  1. 使用 Redis 门面操作,默认为 config/database.php 中 Redis 的 default 连接,数据存入 0 库;
  2. 使用 Cache 操作,因为 config/cache.php 中 Redis 的 connection 设置为 cache,理所当然存入的是 1 库;
  3. Session 也根据 SESSION_CONNECTION=session 配置,正确的存入了 2 库;

使用 Redis 门面的时候,也可以指定连接

$redis = Redis::connection('session');
$redis->setex('facades_connection', 30, 'i am facades_connection');

laravel配置Redis多个库的实现方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
ajax php 实现写入数据库
Sep 02 PHP
如何用php获取程序执行的时间
Jun 09 PHP
基于empty函数的判断详解
Jun 17 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
Sep 22 PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 PHP
PHP JSON格式的中文显示问题解决方法
Apr 09 PHP
orm获取关联表里的属性值
Apr 17 PHP
PHP进行批量任务处理不超时的解决方法
Jul 11 PHP
php魔术方法功能与用法实例分析
Oct 19 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
PHP微信模板消息操作示例
Jun 29 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
Apr 09 #PHP
微信公众号实现扫码获取微信用户信息(网页授权)
Apr 09 #PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 #PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 #PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
Apr 09 #PHP
PHP7引入的"??"和"?:"的区别讲解
Apr 08 #PHP
PHP开发实现快递查询功能详解
Apr 08 #PHP
You might like
PHP排序算法的复习和总结
2012/02/15 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
javascript parseInt 函数分析(转)
2009/03/21 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
django 解决manage.py migrate无效的问题
2018/05/27 Python
Python Requests库基本用法示例
2018/08/20 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
python实现矩阵打印
2019/03/02 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
Python的in,is和id函数代码实例
2020/04/18 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
竞选班干部演讲稿300字
2014/08/20 职场文书
公司合作协议范文
2014/10/01 职场文书
理想国读书笔记
2015/06/25 职场文书
国庆放假通知怎么写
2015/07/30 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书
css弧边选项卡的项目实践
2023/05/07 HTML / CSS