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 和 MySQL 开发的 8 个技巧
Jan 02 PHP
php 什么是PEAR?(第二篇)
Mar 19 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
Oct 12 PHP
PHP加密扩展库Mcrypt安装和实例
Nov 10 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
Mar 18 PHP
详解PHP错误日志的获取方法
Jul 20 PHP
ThinkPHP模型详解
Jul 27 PHP
利用PHP生成CSV文件简单示例
Dec 21 PHP
laravel 5.3中自定义加密服务的方案详解
May 09 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
PHP类的自动加载机制实现方法分析
Jan 10 PHP
Yii框架小部件(Widgets)用法实例详解
May 15 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/02 无线电
[转帖]PHP世纪万年历
2006/12/06 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
golang 调用 php7详解及实例
2017/01/04 PHP
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
js仿360开机效果
2019/12/26 Javascript
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
Python 正则表达式操作指南
2009/05/04 Python
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
利用python程序帮大家清理windows垃圾
2017/01/15 Python
python对于requests的封装方法详解
2019/01/03 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
selenium3.0+python之环境搭建的方法步骤
2021/02/01 Python
烹饪自我鉴定
2014/03/01 职场文书
关爱残疾人标语
2014/06/25 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
格林童话读书笔记
2015/06/30 职场文书
PHP遍历数组的6种方式总结
2021/11/17 PHP
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python