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);
當(dāng)你想要一次發(fā)送很多命令到服務(wù)器時(shí)可以使用管道。使用pipeline
方法:
Redis::pipeline(function($pipe)
{
for ($i = 0; $i < 1000; $i++)
{
$pipe->set("key:$i", $i);
}
});