zoukankan      html  css  js  c++  java
  • laravel5.2总结--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 IlluminateSupportFacadesRedis;

      一些基本使用

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

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

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

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

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

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

  • 相关阅读:
    java的各种日志框架
    (4)一起来看下mybatis框架的缓存原理吧
    (3)一起来看下使用mybatis框架的select语句的源码执行流程吧
    Markdown基本语法
    openstack中使用linux_bridge实现vxlan网络
    python基础—第一句Python语句以及条件语句
    Java内存详解
    Java工具类练习题和答案
    面向过程和面向对象
    网页设计案例
  • 原文地址:https://www.cnblogs.com/redirect/p/6185228.html
Copyright © 2011-2022 走看看