Php Laravel,使用内存中的DB缓存结果
在新闻网站上,我有一个文章模型,我想缓存最新的文章,因为我希望它们的点击率最高。我如何编写这样操作的方法:Php Laravel,使用内存中的DB缓存结果,php,laravel,caching,redis,in-memory,Php,Laravel,Caching,Redis,In Memory,在新闻网站上,我有一个文章模型,我想缓存最新的文章,因为我希望它们的点击率最高。我如何编写这样操作的方法: public function findById($id) { if(Article::inMemory($id)) return Article::findFromMemory($id); return Article::find($id); } 如果有更好的方法,也请提及 use Cache; public function findById($id
public function findById($id)
{
if(Article::inMemory($id))
return Article::findFromMemory($id);
return Article::find($id);
}
如果有更好的方法,也请提及
use Cache;
public function findById($id)
{
if ($articleInCache = Cache::get('article-' . $id)) {
return $articleInCache;
}
return Article::find($id);
}
您可以使用多个内存驱动程序,并且可以确定如何在内存中存储这些值。在上面,它假定您使用“article-”存储了值$id(如“第5条”为键)。这取决于你
查看文档:
查看Laracasts:Laravel有一个专门用于此场景的功能,称为检索或更新:
use Cache;
public function findById($id)
{
return Cache::rememberForever("article-$id", function () use ($id) {
return Article::find($id);
});
}
这将缓存并返回闭包的返回值,否则在需要时执行闭包以填充缓存。如果文章当前不在缓存中,还应将其添加到缓存中