2015-09-17 87 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

不,这是我期望的行为。谢谢! –

相关问题