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);
    });
}

这将缓存并返回闭包的返回值,否则在需要时执行闭包以填充缓存。

如果文章当前不在缓存中,还应将其添加到缓存中