话说大家都怎么维护缓存的?
$data[‘top_project’] = Cache::remember(md5($request->route()->getName().’_top_project’),config(‘app.debug’) == true ? 100 : 864000,function(){
return Project::query()
->from(‘project as p’)
->where(‘p.is_del’,0)
->where(‘p.project_status’,2)
->orderBy(‘views’,’desc’)
->select([‘id’,’project_title’,’budget_upper_limit’])
->limit(10)
->get();
});
如上所示,对查询结果进行了缓存,大家都是怎么维护这个缓存的,我目前采用的方案是当数据有新增的时候删除这个缓存key
本作品采用《CC 协议》,转载必须注明作者和本文链接
都可以啊
但是你这个写法代码毫无可读性 :grin: 别人看了也不知道怎么改
不用,
1-3ms
的优化换心智负担,有点亏。你需要这个包,简单又好用,读起来和写起来没有负担:composer require watson/rememberable
你可以使用 observer 监听,或者封装一层service 用去更新、读取,service 维护缓存
在枚举里面实现,多人合作项目的时候大家经常乱取key的,直接在一个文件统一维护,后面改也方便
你的key是这样的:md5($request->route()->getName().’_top_project’),后面如果缓存键多了redis检索会很慢的。 最好用冒号分割,相当于取了一个命名空间top_project。这样缓存可以更精确地指定匹配的范围,减少了需要遍历的键的数量,提升性能。 'top_project:'.md5($request->route()->getName())
spatie/laravel-responsecache
1、使用observer监听用户模型 的增删改,只要有就删, 2、重写用户模形的find 3、列表真没有必要缓存 4、列表一般是后台用,分页慢是因为limit等sql语句的原因,换一种分页方式,如用id增序,条件加上id > 指定id来做条件限制在配合永久的limit(固定条数),仅对count做缓存即可,建议连count都不要,就上一页下一页,最后列表都卡了,数据不小了,可以同时集成es这些来做查询了,