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读写文件的方法(生成HTML)
Nov 27 PHP
随时给自己贴的图片加文字的php代码
Mar 08 PHP
通过JavaScript或PHP检测Android设备的代码
Mar 09 PHP
PHP 无限分类三种方式 非函数的递归调用!
Aug 26 PHP
PHP爆绝对路径方法收集整理
Sep 17 PHP
使用 PHPMAILER 发送邮件实例应用
Nov 07 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
PHP函数getenv简介和使用实例
May 12 PHP
ThinkPHP验证码和分页实例教程
Aug 22 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
浅析PHP数据导出知识点
Feb 17 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
咖啡常见的种类
2021/03/03 新手入门
人大复印资料处理程序_补充篇
2006/10/09 PHP
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
2013/01/23 Javascript
jquery实现动态菜单的实例代码
2013/11/28 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
Angular 项目实现国际化的方法
2018/01/08 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
Vue修改项目启动端口号方法
2019/11/07 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
python中map、any、all函数用法分析
2015/04/21 Python
Python中正则表达式的详细教程
2015/04/30 Python
python 读写文件,按行修改文件的方法
2018/07/12 Python
简单了解python的一些位运算技巧
2019/07/13 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
机械设计制造专业个人求职信
2013/09/25 职场文书
投资意向书范本
2014/04/01 职场文书
优秀本科毕业生自荐信
2014/07/04 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
导游词之江西赣州
2019/10/15 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
MySQL分区以及建索引的方法总结
2022/04/13 MySQL