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自动更新新闻DIY
Oct 09 PHP
PHP 和 XML: 使用expat函数(三)
Oct 09 PHP
一个很不错的PHP翻页类
Jun 01 PHP
Symfony数据校验方法实例分析
Jan 26 PHP
8个必备的PHP功能开发
Oct 02 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
Jul 01 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 PHP
PHP无限极分类函数的实现方法详解
Apr 15 PHP
Laravel中使用Queue的最基本操作教程
Dec 27 PHP
PHP面向对象程序设计继承用法简单示例
Dec 28 PHP
PHP学习记录之常用的魔术常量详解
Dec 12 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 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代码优化及php相关问题总结
2006/10/09 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
javascript 控制弹出窗口
2007/04/10 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
纯JS实现弹性导航条效果
2017/03/06 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
Vue页面切换和a链接的本质区别详解
2019/11/12 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
python django集成cas验证系统
2014/07/14 Python
Python实现获取某天是某个月中的第几周
2015/02/11 Python
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
Python 的内置字符串方法小结
2016/03/15 Python
关于Python-faker的函数效果一览
2019/11/28 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
人事助理岗位职责
2013/11/18 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
鸿星尔克广告词
2014/03/21 职场文书
环保建议书400字
2014/05/14 职场文书
授权委托书
2014/07/31 职场文书
写给导师的自荐信
2015/03/06 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书