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 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是否存在這個鍵

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM