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 相关文章推荐
php5中date()得出的时间为什么不是当前时间的解决方法
Jun 30 PHP
ThinkPHP快速入门实例教程之数据分页
Jul 01 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
Mar 19 PHP
php实现多城市切换特效
Aug 09 PHP
PHP实现清除wordpress里恶意代码
Oct 21 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
Smarty日期时间操作方法示例
Nov 15 PHP
php闭包中使用use声明变量的作用域实例分析
Aug 09 PHP
PHP异常类及异常处理操作实例详解
Dec 19 PHP
Laravel路由研究之domain解决多域名问题的方法示例
Apr 04 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使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
2016/11/18 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
js的对象与函数详解
2019/01/21 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
2020/03/31 Javascript
[00:11]战神迅矛
2019/03/06 DOTA
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
python文件操作整理汇总
2014/10/21 Python
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
详解python实现线程安全的单例模式
2018/03/05 Python
python实现抽奖小程序
2020/04/15 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
Python Map 函数的使用
2020/08/28 Python
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
测绘工程专业个人自我评价
2013/12/01 职场文书
家庭教育先进个人事迹材料
2014/01/24 职场文书
机械工程学院大学生求职信
2014/05/25 职场文书
主题党日活动总结
2014/07/08 职场文书
医生个人年终总结
2015/02/28 职场文书
网络营销实训总结
2015/08/03 职场文书
酒店员工管理制度
2015/08/05 职场文书
员工给公司的建议书
2019/06/24 职场文书
React自定义hook的方法
2022/06/25 Javascript