在 Laravel 6 中缓存数据库查询结果的方法
Laravel  /  管理员 发布于 8年前   430
在加快应用程序速度方面,缓存可能是最有效的。Laravel 预先安装了缓存驱动程序。因此你可以直接使用 Redis, Memcached 或者使用本地文件进行缓存操作。Laravel 附带了此功能。 这一次,我们将讨论直接从模型缓存 Eloquent 查询,从而使数据库缓存变的轻而易举。 这个包可以在 GitHub 找到,此文档将介绍该应用程序的所有要点。但是,这篇文章,我仅仅介绍缓存和清除缓存的知识。 安装 可以通过 Composer 安装 在你的模型中添加 use QueryCacheable : 默认情况下启动缓存行为 默认情况下,该包不开启查询缓存。为此,可以在模型中添加 $cacheFor 变量。 每当执行一个查询时,缓存将会干预。如果此查询在缓存中为空,那么会去数据库中获取数据,并且缓存它,以便下次可以从缓存中获取。如果此查询存在于缓存中,那么直接返回。 如果你只是想要避免命中缓存,你可以在命中最后一个方法之前使用 ->dontCache() 。 启用逐个查询的缓存行为 另一种方法是,如果默认情况下的缓存机制并不是太好的选择,你可以启用逐个查询的缓存。 首先,从模型中移除变量 $cacheFor。 对于每个查询,你可以调用 ->cacheFor(...) 方法去指定你想缓存的那个查询。 用 tags 更好地组织缓存 一些缓存存储,像 Redis 或者 Memcached,提供了对 key 的标记支持。这很有用,因为我们可以在缓存中标记查询,并在需要时再通过 tag 使所需的缓存失效。 举一个简单的例子,如果我们要在更新一篇文章时使文章列表不进行缓存,你可以像这样写。 了解更多 有关此软件包的更多信息,请在GitHub 上查看该项目。 PS:Laravel缓存 1,Cache:put('key','val',10);设置缓存 键:key , 值:val 10:缓存时间十分钟 2,Cache:add('key','val',10); 设置缓存 key:键,val:值 10:缓存时间十分钟 3,Cache:forever('key','val');永久缓存 4,Cache:has('key');判断缓存是否存在 5,Cache:get('key');获取缓存 6,Cache:pull('key');获取缓存一次并删除缓存 7,Cache:get('key');删除缓存,true删除成功,false删除失败 总结 以上所述是小编给大家介绍的在 Laravel 6 中缓存数据库查询结果的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!$ composer require rennokki/laravel-eloquent-query-cache
use Rennokki\QueryCache\Traits\QueryCacheable;class Article extends Model{ use QueryCacheable; ...}
use Rennokki\QueryCache\Traits\QueryCacheable;class Article extends Model{ use QueryCacheable; protected $cacheFor = 180; // 3 minutes}
// 数据库访问,查询结果存储在缓存中Article::latest()->get();// 未访问数据库,查询结果直接从缓存中返回。Article::latest()->get();
Article::latest()->dontCache()->firstOrFail();
Article::cacheFor(now()->addHours(24))->paginate(15);
$articles = Article::cacheFor(60)->cacheTags(['latest:articles'])->latest()->get();$article = Article::find($id);$article->update(['title' => 'My new title']);Article::flushQueryCache(['latest:articles']);
flushQueryCache
方法使用 latest:articles标记使缓存无效。如果其他的一些查询中没有被 latest:articles标记,那么将被保留缓存。
(有返回值 : 已经有了缓存则返回false, 没有则返回true并缓存)
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号