Laravel下怎么实现缓存查询结果的操作
Admin 2022-06-13 群英技术资讯 1456 次浏览
这篇文章主要讲解了“Laravel下怎么实现缓存查询结果的操作”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel下怎么实现缓存查询结果的操作”吧!
在加快应用程序速度方面,缓存可能是最有效的。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删除失败
总结
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了PHP连接及操作PostgreSQL数据库的方法,结合实例形式分析了php针对PostgreSQL数据库的基本连接以及增删改查等相关操作技巧,需要的朋友可以参考下
在thinkphp中,R方法用于调用某个控制器的操作方法,是A方法的进一步增强和补充,R方法的调用格式为“R('[项目://][分组/]模块/操作','参数','控制器层名称')”。
百钱百鸡的问题具体是:公鸡5元一只,母鸡3元一只,然后小鸡元三只,花了100元买了100只鸡,问公鸡、母鸡、小鸡各买了多少只?看到这个问题,我们可能首先想到的就是一种一种进行循环列举,然后筛选符合要求,也就是所谓的穷举法。由于我们要考虑性能,所以引入一个count记录循环的次数。
php中__call方法的用法:1、当要调用的方法不存在或者权限不足时候,会自动调用。2、首先要重写__call方法,__call方法有2个参数,method和param,对应真实的方法名字和参数。
这篇文章主要介绍了PHP常用函数之base64图片上传功能,结合实例形式分析了前台ajax提交及后台base64图片编码上传相关操作技巧,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008