在 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 相关文章推荐
人大复印资料处理程序_输入篇
Oct 09 PHP
信用卡效验程序
Oct 09 PHP
在PHP3中实现SESSION的功能(二)
Oct 09 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 PHP
php图像处理函数大全(推荐收藏)
Jul 11 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
May 12 PHP
简单概括PHP的字符串中单引号与双引号的区别
May 07 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
Jan 11 PHP
利用PHP实现一个简单的用户登记表示例
Apr 25 PHP
php中各种定义变量的方法小结
Oct 18 PHP
php实现解析xml并生成sql语句的方法
Feb 03 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
Aug 06 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
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
php学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
python des,aes,rsa加解密的实现
2021/01/16 Python
留学推荐信中文范文三篇
2014/01/25 职场文书
创业计划实施的7大步骤
2014/02/05 职场文书
活动总结书
2014/05/08 职场文书
超市理货员岗位职责
2014/07/04 职场文书
化学教育专业求职信
2014/07/08 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
郭明义电影观后感
2015/06/08 职场文书
收入证明申请书
2015/06/12 职场文书
何玥事迹观后感
2015/06/16 职场文书