Laravel,使用内存数据库缓存结果

时间:2016-01-17 21:30:29

标签: php laravel caching redis in-memory

在新闻网站上,我有一个文章模型,我希望缓存最新文章,因为我预计它们的点击率最高。如何编写以这种方式运行的方法:

public function findById($id)
{
    if(Article::inMemory($id))
        return Article::findFromMemory($id);

    return Article::find($id);
}

如果有更好的方法,请同时提及

2 个答案:

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

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