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 Xdebug 调试扩展的安装与使用.
Mar 13 PHP
删除无限分类并同时删除它下面的所有子分类的方法
Aug 08 PHP
PHP开发中的错误收集,不定期更新。
Feb 03 PHP
php查看请求头信息获取远程图片大小的方法分享
Dec 25 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
php实现的简易扫雷游戏实例
Jul 09 PHP
如何使用GDB调试PHP程序
Dec 08 PHP
CodeIgniter多语言实现方法详解
Jan 20 PHP
php中的单引号、双引号和转义字符详解
Feb 16 PHP
实例分析PHP中PHPMailer发邮件
Dec 13 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
May 24 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
Apr 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数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
php中file_exists函数使用详解
2015/05/08 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
图文介绍PHP添加Redis模块及连接
2015/07/28 PHP
php压缩文件夹最新版
2018/07/18 PHP
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
某人初学javascript的时候写的学习笔记
2010/12/30 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
2015/03/23 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
Node.js 基础教程之全局对象
2017/08/06 Javascript
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
python迭代器与生成器详解
2016/03/10 Python
Python实现简单的HttpServer服务器示例
2017/09/25 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
CSS3实现苹果手机解锁的字体闪亮效果示例
2021/01/05 HTML / CSS
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
美国手机支架公司:PopSockets
2019/11/27 全球购物
《菜园里》教学反思
2014/04/17 职场文书
研修心得体会
2014/09/04 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
企业法人代表证明书
2015/06/18 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js