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 相关文章推荐
如何做到多笔资料的同步
Oct 09 PHP
php escape URL编码
Dec 10 PHP
PHP函数strip_tags的一个bug浅析
May 22 PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
Jul 06 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
php实现的mysqldb读写分离操作类示例
Feb 07 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 PHP
PHP并发查询MySQL的实例代码
Aug 09 PHP
Smarty模板语法详解
Jul 20 PHP
laravel-admin 实现在指定的相册下添加照片
Oct 21 PHP
PHP常用字符串函数用法实例总结
Jun 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
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
使用PHP实现二分查找算法代码分享
2011/06/24 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
PHP使用栈解决约瑟夫环问题算法示例
2017/08/27 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
看了就知道什么是JSON
2007/12/09 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
Bootstrap3 Grid system原理及应用详解
2016/09/30 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
使用Vue-Router 2实现路由功能实例详解
2017/11/14 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
vue 项目@change多个参数传值多个事件的操作
2021/01/29 Vue.js
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
简单了解django索引的相关知识
2019/07/17 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
毕业典礼演讲稿
2014/05/13 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android