1. 程式人生 > 實用技巧 >laravel5.8(十九)laravel 快取cache

laravel5.8(十九)laravel 快取cache

Laravel中的cache為我們提供了三種快取機制。

Redis,memcache,以及框架的檔案快取。

這裡主要看的是cache中的檔案快取。

一:訪問多個快取儲存

使用 Cache 門面,你可以使用 store 方法訪問不同的快取儲存器,傳入 store 方法的鍵就是 cache 配置檔案中 stores 配置數組裡列出的相應的儲存器:

$value = Cache::store('file')->get('foo');
Cache::store('redis')->put('bar', 'baz', 600);  // 10分鐘

二:從快取中獲取資料

1:獲取資料並設定預設值

(1):正常取值

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

(2):如果不存在,附預設值

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

(3):使用閉包操作,附預設值

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

2:檢查快取項是否存在

has 方法用於判斷快取項是否存在,如果值為 null 或 false 該方法會返回 false:

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

3:數值增加/減少

increment 和 decrement 方法可用於調整快取中的整型數值。這兩個方法都可以接收第二個引數來指明快取項數值增加和減少的數目:

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

4:獲取 & 儲存

有時候你可能想要獲取快取項,但如果請求的快取項不存在時給它儲存一個預設值。例如,你可能想要從快取中獲取所有使用者,或者如果它們不存在的話,從資料庫獲取它們並將其新增到快取中,你可以通過使用 Cache::remember 方法實現:

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

如果快取項不存在,傳遞給 remember 方法的閉包被執行並且將結果存放到快取中。

你還可以使用 rememberForever 方法從快取中獲取資料或者將其永久儲存起來:

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

5:獲取 & 刪除

如果你需要從快取中獲取快取項然後刪除,你可以使用 pull 方法,和 get 方法一樣,如果快取項不存在的話返回 null:

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

三:快取中儲存資料

1:獲取儲存資料

你可以使用 Cache 門面上的 put 方法在快取中儲存資料。當你在快取中儲存資料的時候,需要指定資料被快取的時間(秒數):

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

如果沒有傳遞快取時間到 put 方法,則快取項永久有效:

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

除了傳遞快取項失效時間,你還可以傳遞一個代表快取項有效時間的 PHP Datetime 例項:

$expiresAt = Carbon::now()->addMinutes(10);
Cache::put('key', 'value', $expiresAt);

2:快取不存在時儲存資料

add 方法只會在快取項不存在的情況下新增資料到快取,如果資料被成功新增到快取返回 true,否則,返回 false:

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

3:永久儲存資料

forever 方法用於持久化儲存資料到快取,這些值必須通過 forget 方法手動從快取中移除:

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

四:從快取中移除資料

可以使用 Cache 門面上的 forget 方法從快取中移除快取項資料:

Cache::forget('key');

還可以通過設定快取有效期為 0 或負數來移除快取項:

Cache::put('key', 'value', 0);
  
Cache::put('key', 'value', -5);

如果要清除所有快取,可以通過 flush 方法:

Cache::flush();

以上基本上就是laravel框架對檔案快取的操作方法

有好的建議,請在下方輸入你的評論。

歡迎訪問個人部落格
https://guanchao.site

歡迎訪問小程式: