在新闻网站上,我有一个文章模型,我希望缓存最新文章,因为我预计它们的点击率最高。如何编写以这种方式运行的方法:
public function findById($id)
{
if(Article::inMemory($id))
return Article::findFromMemory($id);
return Article::find($id);
}
如果有更好的方法,请同时提及
答案 0 :(得分:4)
use Cache;
public function findById($id)
{
if ($articleInCache = Cache::get('article-' . $id)) {
return $articleInCache;
}
return Article::find($id);
}
您可以使用多个内存驱动程序,您可以确定如何将值存储在内存中。在上面,它假定您使用'文章存储了值 - ' 。 $ id(例如"第5条和第34条;作为关键字)。它取决于你。
查看文档:{{3}}
查看Laracasts:https://laravel.com/docs/master/cache
答案 1 :(得分:1)
Laravel为此场景明确提供了一项功能,称为“检索或更新:
”use Cache;
public function findById($id)
{
return Cache::rememberForever("article-$id", function () use ($id) {
return Article::find($id);
});
}
这将缓存并返回闭包的返回值,否则执行闭包以在需要时填充缓存。