这篇文章主要介绍了在 Laravel 6 中缓存数据库查询结果的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
安装
可以通过 Composer 安装
$ composer require rennokki/laravel-eloquent-query-cache
在你的模型中添加 use QueryCacheable :
use Rennokki\QueryCache\Traits\QueryCacheable;class Article extends Model
{
use QueryCacheable; ...
}
默认情况下启动缓存行为
默认情况下,该包不开启查询缓存。为此,可以在模型中添加 $cacheFor 变量。
use Rennokki\QueryCache\Traits\QueryCacheable;class Article extends Model
{
use QueryCacheable; protected $cacheFor = 180; // 3 minutes
}
每当执行一个查询时,缓存将会干预。如果此查询在缓存中为空,那么会去数据库中获取数据,并且缓存它,以便下次可以从缓存中获取。如果此查询存在于缓存中,那么直接返回。
// 数据库访问,查询结果存储在缓存中
Article::latest()->get();// 未访问数据库,查询结果直接从缓存中返回。
Article::latest()->get();
如果你只是想要避免命中缓存,你可以在命中最后一个方法之前使用 ->dontCache() 。
Article::latest()->dontCache()->firstOrFail();
启用逐个查询的缓存行为
另一种方法是,如果默认情况下的缓存机制并不是太好的选择,你可以启用逐个查询的缓存。
首先,从模型中移除变量 $cacheFor。
对于每个查询,你可以调用 ->cacheFor(...) 方法去指定你想缓存的那个查询。
Article::cacheFor(now()->addHours(24))->paginate(15);
用 tags 更好地组织缓存
一些缓存存储,像 Redis 或者 Memcached,提供了对 key 的标记支持。这很有用,因为我们可以在缓存中标记查询,并在需要时再通过 tag 使所需的缓存失效。
举一个简单的例子,如果我们要在更新一篇文章时使文章列表不进行缓存,你可以像这样写。
$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标记,那么将被保留缓存。
了解更多
有关此软件包的更多信息,请在GitHub 上查看该项目。
PS:Laravel缓存
1,Cache:put('key','val',10);设置缓存
键:key , 值:val 10:缓存时间十分钟
2,Cache:add('key','val',10);
设置缓存 key:键,val:值 10:缓存时间十分钟
(有返回值 : 已经有了缓存则返回false, 没有则返回true并缓存)
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 中缓存数据库查询结果的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程学习网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
本文标题为:在 Laravel 6 中缓存数据库查询结果的方法


- php微信公众号开发之秒杀 2022-11-23
- PHP实现微信支付(jsapi支付)流程步骤详解 2022-10-09
- laravel通用化的CURD的实现 2023-03-17
- 用nohup命令实现PHP的多进程 2023-09-02
- PHP仿tp实现mvc框架基本设计思路与实现方法分析 2022-10-18
- windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境) 2023-09-02
- Laravel balde模板文件中判断数据为空方法 2023-08-30
- PHP简单实现二维数组的矩阵转置操作示例 2022-10-02
- laravel实现按月或天或小时统计mysql数据的方法 2023-02-22
- PHP中PDO事务处理操作示例 2022-10-15