在新闻网站上,我有一个文章模型,我想缓存最新的文章,因为我希望他们有最高的点击率。如何编写以这种方式运行的方法:
public function findById($id)
{
if(Article::inMemory($id))
return Article::findFromMemory($id);
return Article::find($id);
}
如果有更好的方法,也请提出来。
发布于 2016-01-19 04:57:56
use Cache;
public function findById($id)
{
if ($articleInCache = Cache::get('article-' . $id)) {
return $articleInCache;
}
return Article::find($id);
}
有多个内存驱动程序可供使用,您可以确定如何在内存中存储值。在上面,它假设你用“文章-”存储了这个值。文章(如“$id -5”作为关键字)。由你决定。
查看文档:https://laravel.com/docs/master/cache
查看Laracast:https://laracasts.com/series/real-time-laravel-with-socket-io/episodes/2
发布于 2016-01-27 00:01:34
Laravel有一个专门针对此场景的功能,称为Retrieve或Update:
use Cache;
public function findById($id)
{
return Cache::rememberForever("article-$id", function () use ($id) {
return Article::find($id);
});
}
这将缓存并返回闭包的返回值,否则在需要时执行闭包以填充缓存。
https://stackoverflow.com/questions/34843958
复制相似问题