一.默認緩存的配置 緩存配置位於config/cache.php,你可以使用memcache,redis,數據庫緩存,文件緩存等.默認是文件緩存 二.緩存獲取 1.獲取 $value = Cache::get('key'); // 默認值 $value = Cache::get('key','default'); // 訪問多個緩存存儲 $value = Cache::store('file')->get('foo'); Cache::store('redis')->put('bar', 'baz', 10); // 傳遞一個閉包,如果數據不存在 $user = Cache::get('user1', function() { return User::where('id', 1)->select('name')->first()->name; }); 2.檢查緩存是否存在 if (Cache::has('key')) { // } 三.緩存寫/更新 1.寫/更新 a.put,無論緩存是否存在,均寫入或者更新 Cache::put('key', 'value', $minutes);//第三個參數為緩存多少分鍾 除了傳遞緩存項失效時間,你還可以傳遞一個代表緩存項有效時間的PHP Datetime 實例: $expiresAt = Carbon::now()->addMinutes(10); Cache::put('key', 'value', $expiresAt); b.add 方法只會在緩存項不存在的情況下添加緩存項到緩存,如果緩存項被添加到緩存返回true ,否則,返回 false : Cache::add('key', 'value', $minutes); 2.forever 方法用於持久化存儲緩存項到緩存,即沒有過期時間,這些值必須通過forget 方法手動從緩存中移除: Cache::forever('key', 'value'); 3.增加減少緩存的值 Cache::increment('key'); Cache::increment('key', $amount); Cache::decrement('key'); Cache::decrement('key', $amount); 4.獲取或更新 $value = Cache::remember('users', $minutes, function() { return DB::table('users')->get(); }); 如果緩存項不存在,傳遞給remember 方法的閉包被執行並且將結果存放到緩存中。 你還可以聯合remember 和forever 方法: $value = Cache::rememberForever('users', function() { return DB::table('users')->get();}); 5.獲取緩存后刪除 $value = Cache::pull('key'); 四.刪除 1.刪除單個 Cache::forget('key'); 2.清空全部 Cache::flush(); 五.緩存標簽 緩存標簽不支持file或database緩存驅動.memcache等內存緩存通常比較適合做緩存,因為它們有有過期時間,可以被自動過期刪除. 1.存儲 緩存標簽允許你給相關的緩存項打上同一個標簽,然后可以輸出被分配同一個標簽的所有緩存值。你可以通過傳遞一個有序的標簽名數組來訪問被打上標簽的緩存。例如,讓我們訪問一個被打上標簽的緩存並將其值放到緩存中: Cache::tags(['people', 'artists'])->put('John', $john, $minutes); Cache::tags(['people', 'authors'])->put('Anne', $anne, $minutes); 2.獲取 $john = Cache::tags(['people', 'artists'])->get('John'); $anne = Cache::tags(['people', 'authors'])->get('Anne'); 3.移除 Cache::tags(['people', 'authors'])->flush();//移除被打上people,authors標簽的緩存,或者,Anne 和 John都會從緩存中移除: Cache::tags('authors')->flush(); //移除被打上 authors標簽的緩存,所以Anne會被移除,而John不會: 六.緩存事件 要在每次緩存操作時執行相應程序,你可以監聽緩存觸發的事件,通常,你可以將這些緩存處理器代碼放到EventServiceProvider的boot方法中: /** * 注冊應用任意其他事件 * * @param \Illuminate\Contracts\Events\Dispatcher $events * @return void */ public function boot(DispatcherContract $events){ parent::boot($events); $events->listen('cache.hit', function ($key, $value) { // }); $events->listen('cache.missed', function ($key) { // }); $events->listen('cache.write', function ($key, $value, $minutes) { // }); $events->listen('cache.delete', function ($key) { // }); }