鍍金池/ 教程/ PHP/ Redis
Laravel Cashier
Eloquent ORM
HTTP 響應(yīng)
發(fā)行說(shuō)明
擴(kuò)展包開(kāi)發(fā)
HTTP 控制器
事件
擴(kuò)展框架
Contracts
開(kāi)發(fā)
配置
表單驗(yàn)證
錯(cuò)誤與日志
Hashing
貢獻(xiàn)指南
郵件
Session
遷移與數(shù)據(jù)填充
查詢構(gòu)造器
Redis
升級(jí)向?qū)?/span>
概覽
緩存
服務(wù)提供者
Envoy 任務(wù)執(zhí)行器
隊(duì)列
單元測(cè)試
服務(wù)容器
文件系統(tǒng) / 云存儲(chǔ)
認(rèn)證
請(qǐng)求的生命周期
加密
模板
視圖 (View)
Laravel Homestead
Laravel 安裝指南
介紹
Command Bus
分頁(yè)
輔助方法
應(yīng)用程序結(jié)構(gòu)
HTTP 路由
HTTP 請(qǐng)求
基本用法
本地化
HTTP 中間件
結(jié)構(gòu)生成器
Facades
Laravel Elixir

Redis

介紹

Redis 是開(kāi)源,先進(jìn)的鍵值對(duì)保存庫(kù)。由于它可用的鍵包含了 字串、哈希、列表、集合有序集合,因此常被稱作數(shù)據(jù)結(jié)構(gòu)服務(wù)器。

在使用 Redis 之前,你需要經(jīng)由 Composer 將 predis/predis 擴(kuò)展包裝在 Laravel 中。

提醒: 如果你用 PECL 安裝了 Redis PHP extension,則需要重命名 config/app.php 里的 Redis 別名。

配置文件

應(yīng)用程序的 Redis 配置文件在 config/database.php。在這個(gè)文件里,你會(huì)看到redis 數(shù)組,里面有應(yīng)用程序使用的 Redis 服務(wù)器數(shù)據(jù):

    'redis' => array(

        'cluster' => true,

        'default' => array('host' => '127.0.0.1', 'port' => 6379),

    ),

默認(rèn)的服務(wù)器配置對(duì)于開(kāi)發(fā)應(yīng)該是足夠的。然而,你可以根據(jù)使用環(huán)境自由修改數(shù)組數(shù)據(jù)。只要給每個(gè) Redis 一個(gè)名稱,并且配置服務(wù)器的 host 和 port。

cluster 選項(xiàng)會(huì)讓 Laravel 的 Redis 客戶端在所有 Redis 節(jié)點(diǎn)間執(zhí)行客戶端分片( client-side sharding ),讓你建立節(jié)點(diǎn)池,并因此擁有大量的 RAM 可用。然而,客戶端分片的節(jié)點(diǎn)不能執(zhí)行容錯(cuò)轉(zhuǎn)移;因此,這主要適合用可以從另一臺(tái)主要數(shù)據(jù)保存庫(kù)取得的緩存數(shù)據(jù)。

如果你的 Redis 服務(wù)器需要認(rèn)證,你可以在 Redis 服務(wù)器配置文件里加入password 為鍵值的參數(shù)配置。

使用方式

你可以經(jīng)由 Redis::connection 方法得到 Redis 實(shí)例:

    $redis = Redis::connection();

你會(huì)得到一個(gè)使用 Redis 默認(rèn)服務(wù)器的實(shí)例。如果你沒(méi)有使用服務(wù)器集群,你可以在 connection 方法傳入定義在 Redis 配置文件的服務(wù)器名稱,以連到特定服務(wù)器:

    $redis = Redis::connection('other');

一旦你有了 Redis 客戶端實(shí)例,就可以使用實(shí)例發(fā)出任何Redis 命令。Laravel 使用魔術(shù)方法傳遞命令到服務(wù)器:

    $redis->set('name', 'Taylor');

    $name = $redis->get('name');

    $values = $redis->lrange('names', 5, 10);

注意,傳入命令的參數(shù)僅只是傳遞到魔術(shù)方法里。當(dāng)然,你不一定要使用魔術(shù)方法,你也可以使用command 方法傳遞命令到服務(wù)器:

    $values = $redis->command('lrange', array(5, 10));

若你只想對(duì)默認(rèn)服務(wù)器下命令,可以使用Redis 類的靜態(tài)魔術(shù)方法:

    Redis::set('name', 'Taylor');

    $name = Redis::get('name');

    $values = Redis::lrange('names', 5, 10);

提示: 也可以使用 Redis 作為 Laravel 的緩存會(huì)話 驅(qū)動(dòng)。

管道

當(dāng)你想要一次發(fā)送很多命令到服務(wù)器時(shí)可以使用管道。使用pipeline 方法:

發(fā)送多個(gè)命令到服務(wù)器

    Redis::pipeline(function($pipe)
    {
        for ($i = 0; $i < 1000; $i++)
        {
            $pipe->set("key:$i", $i);
        }
    });