【问题标题】:Laravel, using in-memory DB to cache resultsLaravel,使用内存数据库缓存结果
【发布时间】:2016-04-22 23:43:14
【问题描述】:

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

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

    return Article::find($id);
}

如果有更好的方法,也请提出来

【问题讨论】:

标签: php laravel caching redis in-memory


【解决方案1】:

Laravel 有一个专门针对这种情况的功能,称为检索或更新:

use Cache;
public function findById($id)
{
    return Cache::rememberForever("article-$id", function () use ($id) {
        return Article::find($id);
    });
}

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

【讨论】:

    【解决方案2】:
    use Cache;
    public function findById($id) 
    {
        if ($articleInCache = Cache::get('article-' . $id)) {
            return $articleInCache;
        }
        return Article::find($id);
    }
    

    您可以使用多种内存驱动程序,并且可以确定要如何将值存储在内存中。上面,它假设您使用 'article-' 存储值。 $id(如“article-5”为key)。这取决于你。

    查看文档:https://laravel.com/docs/master/cache

    查看 Laracast:https://laracasts.com/series/real-time-laravel-with-socket-io/episodes/2

    【讨论】:

    • 如果文章当前不在缓存中,您还应该将其添加到缓存中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多