2015-09-17 88 views
0

我想在緩存中存儲數組。我使用「MemCached」作爲緩存驅動程序,它的作用就像查詢中的魅力一樣,但我希望將其用於搜索建議。我一直在看Laravel文檔(http://laravel.com/docs/5.1/cache),但我一直無法找到我在找的東西。如何檢查Laravel 5中的Cache元素是否已過期?

例如,我有這個功能,如果我發現緩存中的元素,我就可以得到它。如果不是這樣,我從DB的結果,然後把它們存儲在緩存10分鐘:

public function get_suggestions() { 

     if(Cache::get('search_suggestions')) { 
     return $search_suggestions; 
     } else { 
     $search_suggestions = Suggestions::get(); 
     Cache::put('search_suggestions', '$search_suggestions', 10); 
     return $search_suggestions;   
} 

} 

一些問題:

  1. 如果緩存元素到期時,會出現什麼緩存::獲取函數返回?
  2. 有一個函數來檢查元素是否存在於數據庫中,但是有沒有人檢查Cache項是否過期?
  3. 我的方法可以管理緩存嗎?

回答

1

您可以使用Cache::has檢查是否存在。

但在你的情況我建議使用Cache::remember

public function get_suggestions() { 
    return Cache::remember('search_suggestions', 10, function() { 
     return Suggestions::get(); 
    }); 
} 
+0

但是......從緩存中移除已到期的所有元素?或者可以是它們已經過期的緩存上的元素? –

+0

如果緩存項目到期,它將被刪除。如果你想要一個不同的行爲,你必須編寫一個自己的緩存處理程序 – Philipp

+0

不,這是我期望的行爲。謝謝! –

相關問題