鍍金池/ 教程/ PHP/ 緩存
Laravel Cashier
Eloquent ORM
HTTP 響應(yīng)
發(fā)行說明
擴(kuò)展包開發(fā)
HTTP 控制器
事件
擴(kuò)展框架
Contracts
開發(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īng)用程序結(jié)構(gòu)
HTTP 路由
HTTP 請(qǐng)求
基本用法
本地化
HTTP 中間件
結(jié)構(gòu)生成器
Facades
Laravel Elixir

緩存

配置 緩存用法 遞增與遞減 緩存標(biāo)簽 緩存事件 數(shù)據(jù)庫(kù)緩存

配置

Laravel 為各種不同的緩存系統(tǒng)提供一致的 API 。緩存配置文件位在 config/cache.php 。您可以在此為應(yīng)用程序指定使用哪一種緩存系統(tǒng), Laravel 支持各種常見的后端緩存系統(tǒng),如 MemcachedRedis 。

緩存配置文件也包含多個(gè)其他選項(xiàng),在文件里都有說明,所以請(qǐng)務(wù)必先閱讀過。 Laravel 默認(rèn)使用文件 緩存系統(tǒng),該系統(tǒng)會(huì)保存序列化、緩存對(duì)象在文件系統(tǒng)中。在大型應(yīng)用程序上,建議使用保存在內(nèi)存內(nèi)的緩存系統(tǒng),如 Memcached 或 APC 。你甚至可以以同一個(gè)緩存系統(tǒng)配置多個(gè)緩存配置。

在 Laravel 中使用 Redis 緩存系統(tǒng)前, 必須先使用 Composer 安裝 predis/predis 擴(kuò)展包 (~1.0) 。

緩存用法

保存對(duì)象到緩存中

Cache::put('key', 'value', $minutes);

使用 Carbon 對(duì)象配置緩存過期時(shí)間

$expiresAt = Carbon::now()->addMinutes(10);

Cache::put('key', 'value', $expiresAt);

若是對(duì)象不存在,則將其存入緩存中

Cache::add('key', 'value', $minutes);

當(dāng)對(duì)象確實(shí)被加入緩存時(shí),使用 add 方法將會(huì)返回 true 否則會(huì)返回 false

確認(rèn)對(duì)象是否存在

if (Cache::has('key'))
{
    //
}

從緩存中取得對(duì)象

$value = Cache::get('key');

取得對(duì)象或是返回默認(rèn)值

$value = Cache::get('key', 'default');

$value = Cache::get('key', function() { return 'default'; });

永久保存對(duì)象到緩存中

Cache::forever('key', 'value');

有時(shí)候您會(huì)希望從緩存中取得對(duì)象,而當(dāng)此對(duì)象不存在時(shí)會(huì)保存一個(gè)默認(rèn)值,您可以使用 Cache::remember 方法:

$value = Cache::remember('users', $minutes, function()
{
    return DB::table('users')->get();
});

您也可以結(jié)合 rememberforever 方法:

$value = Cache::rememberForever('users', function()
{
    return DB::table('users')->get();
});

請(qǐng)注意所有保存在緩存中的對(duì)象皆會(huì)被序列化,所以您可以任意保存各種類型的數(shù)據(jù)。

從緩存拉出對(duì)象

如果您需要從緩存中取得對(duì)象后將它刪除,您可以使用 pull 方法:

$value = Cache::pull('key');

從緩存中刪除對(duì)象

Cache::forget('key');

獲取特定的緩存存儲(chǔ)

當(dāng)使用多種緩存存儲(chǔ)時(shí),你可以通過 store 方法來訪問它們:

$value = Cache::store('foo')->get('key');

遞增與遞減

除了文件數(shù)據(jù)庫(kù)以外的緩存系統(tǒng)都支持遞增遞減操作:

遞增值

Cache::increment('key');

Cache::increment('key', $amount);

遞減值

Cache::decrement('key');

Cache::decrement('key', $amount);

緩存標(biāo)簽

注意: 文件或數(shù)據(jù)庫(kù)這類緩存系統(tǒng)均不支持緩存標(biāo)簽。此外,使用帶有「forever」的緩存標(biāo)簽時(shí),挑選 memcached 這類緩存系統(tǒng)將獲得最好的性能,它會(huì)自動(dòng)清除過期的紀(jì)錄。

訪問緩存標(biāo)簽

緩存標(biāo)簽允許您標(biāo)記緩存內(nèi)的相關(guān)對(duì)象,然后使用特定名稱更新所有緩存標(biāo)簽。要訪問緩存標(biāo)簽可以使用 tags 方法。

您可以保存緩存標(biāo)簽,通過將有序標(biāo)簽列表當(dāng)作參數(shù)傳入,或者作為標(biāo)簽名稱的有序數(shù)組:

Cache::tags('people', 'authors')->put('John', $john, $minutes);

Cache::tags(array('people', 'artists'))->put('Anne', $anne, $minutes);

您可以結(jié)合使用各種緩存保存方法與標(biāo)簽,包含 remember, forever, 和 rememberForever 。您也可以從已標(biāo)記的緩存中訪問對(duì)象,以及使用其他緩存方法如 incrementdecrement 。

從已標(biāo)記的緩存中訪問對(duì)象

要訪問已標(biāo)記的緩存,可傳入相同的有序標(biāo)簽列表。

$anne = Cache::tags('people', 'artists')->get('Anne');

$john = Cache::tags(array('people', 'authors'))->get('John');

您可以更新所有已標(biāo)記的對(duì)象,使用指定名稱或名稱列表。例如,以下例子將會(huì)移除帶有 peopleauthors 或者兩者皆有的所有緩存標(biāo)簽,所以「Anne」和「John」皆會(huì)從緩存中被移除:

Cache::tags('people', 'authors')->flush();

對(duì)照來看,以下例子將只會(huì)移除帶有 authors 的標(biāo)簽,所以「John」會(huì)被移除,但是「Anne」不會(huì)。

Cache::tags('authors')->flush();

緩存事件

你可以通過監(jiān)聽緩存操作時(shí)對(duì)應(yīng)的事件來執(zhí)行特定的代碼:

Event::listen('cache.hit', function($key, $value) {
    //
});

Event::listen('cache.missed', function($key) {
    //
});

Event::listen('cache.write', function($key, $value, $minutes) {
    //
});

Event::listen('cache.delete', function($key) {
    //
});

數(shù)據(jù)庫(kù)緩存

當(dāng)使用數(shù)據(jù)庫(kù)緩存系統(tǒng)時(shí),您必須配置一張數(shù)據(jù)表來保存緩存對(duì)象。數(shù)據(jù)表的 Schema 聲明例子如下:

Schema::create('cache', function($table)
{
    $table->string('key')->unique();
    $table->text('value');
    $table->integer('expiration');
});
上一篇:表單驗(yàn)證下一篇:介紹