在 Laravel 6 中缓存数据库查询结果的方法


Posted in PHP onDecember 11, 2019

在 Laravel 6 中缓存数据库查询结果的方法

在加快应用程序速度方面,缓存可能是最有效的。Laravel 预先安装了缓存驱动程序。因此你可以直接使用 Redis, Memcached 或者使用本地文件进行缓存操作。Laravel 附带了此功能。

这一次,我们将讨论直接从模型缓存 Eloquent 查询,从而使数据库缓存变的轻而易举。

这个包可以在 GitHub 找到,此文档将介绍该应用程序的所有要点。但是,这篇文章,我仅仅介绍缓存和清除缓存的知识。

安装

可以通过 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 中缓存数据库查询结果的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

PHP 相关文章推荐
PHP源代码数组统计count分析
Aug 02 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
Oct 15 PHP
php使用指定字符列表生成随机字符串的方法
Apr 18 PHP
php简单判断文本编码的方法
Jul 30 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
Sep 29 PHP
使用PHP uniqid函数生成唯一ID
Nov 18 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
Dec 09 PHP
PHP命名空间namespace用法实例分析
Sep 27 PHP
PHP自定义多进制的方法
Nov 03 PHP
PHP编程实现脚本异步执行的方法
Aug 09 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 11 #PHP
关于PHP5.6+版本“No input file specified”问题的解决
Dec 11 #PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 #PHP
Laravel5.1 框架表单验证操作实例详解
Jan 07 #PHP
PHP字符串与数组处理函数用法小结
Jan 07 #PHP
Laravel5.1 框架响应基本用法实例分析
Jan 04 #PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 #PHP
You might like
微信API接口大全
2015/04/15 PHP
Smarty变量用法详解
2016/05/11 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
自动更新作用
2006/10/08 Javascript
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
animate 实现滑动切换效果【实例代码】
2016/05/05 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
jQuery输入框密码的显示隐藏【代码分享】
2017/04/29 jQuery
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
python实现文件助手中查看微信撤回消息
2019/04/29 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
CLR与IL分别是什么含义
2016/08/23 面试题
一年级学生期末评语
2014/04/21 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
党校党性分析材料
2014/12/19 职场文书
报名委托书
2015/01/29 职场文书
实习证明格式范文
2015/06/16 职场文书
新闻稿件写作范文
2015/07/18 职场文书
2019年员工晋升管理制度范本!
2019/07/08 职场文书
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB