[ Laravel 5.2 文檔 ] 服務 -- Redis

來源:互聯網
上載者:User

1、簡介

Redis是一個開源的、進階的索引值對儲存系統,經常被用作資料結構伺服器,因為其支援 字串、 Hash、 列表、 集合和 有序集合等資料結構。在Laravel中使用Redis之前,需要通過Composer安裝 predis/predis包(~1.0)。

配置

應用的Redis配置位於設定檔 config/database.php。在這個檔案中,可以看到包含被應用使用的Redis伺服器的 redis數組:

'redis' => [    'cluster' => false,    'default' => [        'host'     => '127.0.0.1',        'port'     => 6379,        'database' => 0,    ],],

預設伺服器配置可以滿足開發需要,然而,你可以基於環境隨意修改該數組,只需要給每個Redis伺服器一個名字並指定該Redis伺服器使用的主機和介面。

cluster選項告訴Laravel Redis 用戶端在多個Redis節點間執行用戶端分區,從而形成節點池並建立大量有效RAM。然而,用戶端分區並不處理容錯移轉,所以,非常適合從另一個主要資料儲存那裡擷取有效快取資料。

此外,你可以在Redis串連定義中定義options數組值,從而允許你指定一系列Predis 用戶端選項。

如果Redis伺服器要求認證資訊,你可以通過添加 password配置項到Redis伺服器配置數組來提供密碼。

注意:如果你通過PECL安裝PHP的Redis擴充,需要在 config/app.php檔案中修改Redis的別名。

2、基本使用

你可以通過調用 Redis門面上的多個方法來與Redis進行互動,該門面支援動態方法,所以你可以任何 Redis命令,該命令將會直接傳遞給Redis,在本例中,我們通過調用 Redis門面上的 get方法來調用Redis上的GET命令:

 $user]);    }}

當然,如上所述,可以在 Redis門面上調用任何Redis命令。Laravel使用魔術方法將命令傳遞給Redis伺服器,所以只需簡單傳遞參數和Redis命令如下:

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

此外還可以使用 command方法傳遞命令到伺服器,該方法接收命令名作為第一個參數,參數值數組作為第二個參數:

$values = Redis::command('lrange', ['name', 5, 10]);

使用多個Redis串連

你可以通過調用 Redis::connection方法擷取Redis執行個體:

$redis = Redis::connection();

這將會擷取預設Redis伺服器執行個體,如果你沒有使用伺服器叢集,可以傳遞伺服器名到 connection方法來擷取指定Redis配置中定義的指定伺服器:

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

管道命令

當你需要在一次操作中發送多個命令到伺服器的時候應該使用管道, pipeline方法接收一個參數:接收Redis執行個體的閉包。你可以將所有Redis命令發送到這個Redis執行個體,然後這些命令會在一次操作中被執行:

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

3、 發布/ 訂閱

Redis還提供了調用Redis的 publish和 subscribe命令的介面。這些Redis命令允許你在給定“頻道”監聽訊息,你可以從另外一個應用發布訊息到這個頻道,甚至使用其它程式設計語言,從而允許你在不同的應用/進程之間輕鬆通訊。

首先,讓我們使用 subscribe方法通過Redis在一個頻道上設定監聽器。由於調用 subscribe方法會開啟一個常駐進程,我們將在Artisan命令中調用該方法:

    

現在,我們可以使用 publish發布訊息到該頻道:

Route::get('publish', function () {    // 路由邏輯...    Redis::publish('test-channel', json_encode(['foo' => 'bar']));});

萬用字元訂閱

使用 psubscribe方法,你可以訂閱到一個萬用字元定義的頻道,這在所有相應頻道上擷取所有訊息時很有用。 $channel名將會作為第二個參數傳遞給提供的回調閉包:

Redis::psubscribe(['*'], function($message, $channel) {    echo $message;});Redis::psubscribe(['users.*'], function($message, $channel) {    echo $message;});
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.