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 将excel导入mysql
Nov 09 PHP
php $_SERVER当前完整url的写法
Nov 12 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 PHP
PHP遍历目录并返回统计目录大小
Jun 09 PHP
初识php MVC
Sep 10 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
Jan 04 PHP
php实现图片上传并利用ImageMagick生成缩略图
Mar 14 PHP
php数组分页实现方法
Apr 30 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
Feb 28 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
PHP模糊查询技术实例分析【附源码下载】
Mar 07 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边学边教》(01.开篇――准备工作)
2006/12/13 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
JS动画效果代码3
2008/04/03 Javascript
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
Python2随机数列生成器简单实例
2017/09/04 Python
解决python replace函数替换无效问题
2020/01/18 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
基于Python实现视频的人脸融合功能
2020/06/12 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
求职推荐信范文
2013/12/01 职场文书
创业计划书怎样才能打动风投
2014/01/01 职场文书
开门红主持词
2014/04/02 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
党支部先进事迹材料
2014/12/24 职场文书
医德医风个人总结
2015/02/28 职场文书
旷工辞退通知书
2015/04/17 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
2015选调生工作总结
2015/07/24 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers