hyperf2.2框架中添加Cache代理类的流程步骤及使用案例
swoole  /  管理员 发布于 2年前   1587
我的hyperf2.2开发的项目,忽然访问有点慢,所以开启mysql慢日志看看,果然应了那句老话,web项目的瓶颈百分之九十在数据库。
因为昨天下班前我把项目从hyperf2.1升级到2.2,并且采集导进去好几万数据。
然后我就开始优化了
1.根据慢sql添加对应的索引,联合索引
2.一些索引不管用的,我们叫做‘特殊’的sql,用缓存的方式处理
hyperf2.2中像使用cache这样的功能,那添加个代理类统一调用还是很有必要的
不然获取容器对象每次都要复写是比较烦的
进入步骤
创建文件夹及cache.php代理类文件
路径如下:
\hyperf\app\Utils\Cache.php
代码:
<?php
/**
* Cache代理类
* User: houtizong
* Date: 2022\5\26 0028
* Time: 10:28
*/
namespace App\Utils;
use Hyperf\Utils\ApplicationContext;
class Cache
{
//获取容器对象--单例
public static function getIns()
{
return ApplicationContext::getContainer()->get(\Psr\SimpleCache\CacheInterface::class);
}
public static function __callStatic($name, $arguments)
{
return self::getIns()->$name(...$arguments);
}
}
控制器中使用(我这用一个功能案例)
use App\Utils\Cache;
...
//文章归档 格式:2022-05
//sql 这条sql比较特殊了 用上缓存
/* 'SELECT
pubtime,
FROM_UNIXTIME( `pubtime`, '%Y-%m' ) AS time
FROM
art
WHERE
is_state = 0
AND is_del = 1
GROUP BY
time'
*/
$file = Cache::get('file');
if (!Cache::has('file')) {
$file = DB::table('art')
->select('pubtime',DB::raw('FROM_UNIXTIME(pubtime,\'%Y-%m\') as time'))
->where('is_state',0)->where('is_del',1)
->groupBy('time')->get();
Cache::getIns()->set('file', $file , 3620);//写缓存
}
...
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号