话说大家都怎么维护缓存的?

$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 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 15

都可以啊
但是你这个写法代码毫无可读性 :grin: 别人看了也不知道怎么改

2周前 评论
IT学徒 (楼主) 2周前
唐章明 1周前

不用, 1-3ms的优化换心智负担,有点亏。

2周前 评论
IT学徒 (楼主) 2周前

你需要这个包,简单又好用,读起来和写起来没有负担:composer require watson/rememberable

2周前 评论
IT学徒 (楼主) 2周前

你可以使用 observer 监听,或者封装一层service 用去更新、读取,service 维护缓存

2周前 评论

在枚举里面实现,多人合作项目的时候大家经常乱取key的,直接在一个文件统一维护,后面改也方便

file

2周前 评论
xujinhui (作者) 2周前
IT学徒 (楼主) 2周前
IT学徒 (楼主) 2周前

你的key是这样的:md5($request->route()->getName().’_top_project’),后面如果缓存键多了redis检索会很慢的。 最好用冒号分割,相当于取了一个命名空间top_project。这样缓存可以更精确地指定匹配的范围,减少了需要遍历的键的数量,提升性能。 'top_project:'.md5($request->route()->getName())

2周前 评论

spatie/laravel-responsecache

1周前 评论

1、使用observer监听用户模型 的增删改,只要有就删, 2、重写用户模形的find 3、列表真没有必要缓存 4、列表一般是后台用,分页慢是因为limit等sql语句的原因,换一种分页方式,如用id增序,条件加上id > 指定id来做条件限制在配合永久的limit(固定条数),仅对count做缓存即可,建议连count都不要,就上一页下一页,最后列表都卡了,数据不小了,可以同时集成es这些来做查询了,

1周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!