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 相关文章推荐
开发大型 PHP 项目的方法
Jan 02 PHP
php 方便水印和缩略图的图形类
May 21 PHP
关于php curl获取301或302转向的网址问题的解决方法
Jun 02 PHP
php截取中文字符串不乱码的方法
Dec 25 PHP
利用php下载xls文件(自己动手写的)
Apr 18 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
PHP实现根据设备类型自动跳转相应页面的方法
Jul 24 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
php+mysql+jquery实现日历签到功能
Feb 27 PHP
PHP实现通过文本文件统计页面访问量功能示例
Feb 13 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 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中time()和mktime()方法的区别
2013/09/28 PHP
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
简单理解PHP的面向对象编程方式
2016/05/17 PHP
PHP自定义多进制的方法
2016/11/03 PHP
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
2018/04/28 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
python远程邮件控制电脑升级版
2019/05/23 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
HTML5的结构和语义(5):内嵌媒体
2008/10/17 HTML / CSS
使用html5制作loading图的示例
2014/04/14 HTML / CSS
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
施工安全承诺书
2014/05/22 职场文书
人口与计划生育目标管理责任书
2014/07/29 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
学校运动会报道稿
2014/09/23 职场文书
抗洪救灾标语
2014/10/08 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年就业工作总结
2014/11/26 职场文书
2015年工程师工作总结
2015/04/30 职场文书