laravel框架之redis使用

Posted ArcheWong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel框架之redis使用相关的知识,希望对你有一定的参考价值。

 

 

一切的前提都是已经安装好了redis服务器,并且能启动(我只总结了mac的安装方法:传送门)

我自己使用的是mac系统,有个教程可以参考下,传送门:

1.安装php PRedis

  1>PRedis是PHP访问redis的扩展包,只需要下载原码即可,不需要安装PHP扩展(如php-redis.so)。

  2>laravel通过Composer来安装第三方程序包(管理依赖关系)

  3>在Laravel项目根目录下运行如下命令使用Composer安装predis依赖包:

  composer require predis/predis 1.0.*

2.配置

  默认情况下,Redis 服务会提供 16 个数据库,Laravel 使用数据库 0 作为缓存和 Session 的存储。当你在执行命令 php artisan cache:clear 的时候,会把 Session 也连带清除了,导致所有用户需要重新登录。我们的目的是让缓存,也就是默认的 Redis 存储到 0 号数据库,Session 存储在 1 号数据库。(\'database\' => 0,\'database\' => 1)

 

1>配置redis数据库

应用的Redis配置位于config/database.php,你可以基于环境随意修改该数组,只需要给每个Redis服务器一个名字并指定该Redis服务器使用的主机和接口。

\'redis\' => [
  \'cluster\' => false,

  //默认的redis服务器
  \'default\' => [
  \'host\' => env(\'REDIS_HOST\', \'localhost\'),
  \'password\' => env(\'REDIS_PASSWORD\', null),
  \'port\' => env(\'REDIS_PORT\', 6379),
  \'database\' => 0,
  ],

  //供session使用的
  \'session\' => [
  \'host\' => env(\'REDIS_HOST\', \'localhost\'),
  \'password\' => env(\'REDIS_PASSWORD\', null),
  \'port\' => env(\'REDIS_PORT\', 6379),
  \'database\' => 1,
  ],

  //配置更多的redis服务器...

],

2>指定session使用数据库

  修改 config/session.php 文件中connection选项为session:如下

  \'connection\' => \'session\',

3>修改 .env 文件的 SESSION_DRIVER 选项为 redis:如下

  SESSION_DRIVER=redis

4>测试一下

  执行以下命令后检查下是否退出登录:

  php artisan cache:clear

3.进一步分析

  另外Redis如果将是作为缓存工具,我们config/cache.php 文件,请注意下面两个配置

\'default\' => env(\'CACHE_DRIVER\', \'file\'),

\'stores\' => [
  \'apc\' => [
    \'driver\' => \'apc\',
  ],

  \'file\' => [
    \'driver\' => \'file\',
    \'path\' => storage_path(\'framework/cache\'),
  ],

  // 其它一些配置省略了...

  \'redis\' => [
    \'driver\' => \'redis\',
    \'connection\' => \'default\',
  ],
],

分析:

  1>此时cache使用的是file驱动

  2>stores数组中redis对应的是默认的redis配置(default,config/database.php文件中redis的配置选项)

  改动:我们可以直接改\'default\' => env(\'CACHE_DRIVER\', \'redis\')这样我们的cache就是用了redis进行缓存(先不考虑.env文件的配置)

 进一步分析:

  config/session.php 文件下有\'driver\' => env(\'SESSION_DRIVER\', \'file\'),

  config/cache.php文件下有\'default\' => env(\'CACHE_DRIVER\', \'file\'),

  我们在回头看下.env文件,有如下内容    

CACHE_DRIVER=file
SESSION_DRIVER=redis
QUEUE_DRIVER=sync

REDIS_HOST=192.168.1.248
REDIS_PASSWORD=null
REDIS_PORT=6379

  我们知道在这里可以刷新原文件进行的一些配置,在.env文件中我们可以配置session和cache使用哪种方式驱动,我们还可以配置redis的服务器地址等等

4.使用redis

  我们可以在Redis门面上以静态方法的方式调用Redis客户端提供的任何命令,然后Laravel使用魔术方法将命令传递给Redis服务器并返回获取的结果。

  使用前提是引入Redis门面

    use Illuminate\\Support\\Facades\\Redis;

  一些基本使用

    Redis::set(\'key\',\'value\'); //存入redis

    Redis::get(\'key\'); //获取redis中的值

    Redis::lLen(\'key\'); //队列的长度

    Redis::rpop(\'key\'); //右侧出队列

    Redis::rpush(\'key\',\'value\'); //右侧存入队列

    Redis::exists($key) //redis是否存在这个键

 

以上是关于laravel框架之redis使用的主要内容,如果未能解决你的问题,请参考以下文章

将非框架 PHP 项目移植到 Laravel 4.x

laravel框架中 session保存到Redis中

Laravel之视图和Blade模板引擎

需要一种有效的方法来避免使用 Laravel 5 重复代码片段

Laravel之简单的学生信息管理平台

laravel redis 使用遇到问题