当前位置:首页 > Hyperf > 正文内容

Hyperf缓存封装

陈杰4个月前 (12-09)Hyperf375

hyperf官方的缓存文档写得很好,但是对于一个从传统框架比如laravel thinkphp转到这上面来学习的同学就不是很友好了。


原理都很好,自动维护缓存,注解缓存这些东西,在我开始学习php的时候就想过这些东西,hyperf不仅想到了,还把他实现了。


但是用久了laravel还是有点不习惯,所以还是来封装一下吧,可以用自动维护缓存的地方就用hyperf自带的,需要手动地方就用手动。

<?php
/**
 * Author:陈杰
 * Blog:http://blog.95shouyou.com
 * Email:823380606@qq.com
 * Git:https://gitee.com/chen95
 * Date:2020/12/8 0008
 * Time:14:55
 */

namespace App\Common;


use Closure;
use Hyperf\Utils\ApplicationContext;
use Psr\SimpleCache\CacheInterface;

class Cache
{
    public static function getInstance()
    {
        return ApplicationContext::getContainer()->get(CacheInterface::class);
    }

    public static function remember($key, $ttl, Closure $callback)
    {
        $instance = self::getInstance();

        $value = $instance->get($key);

        if (!is_null($value)) {
            return $value;
        }

        $instance->set($key, $value = $callback(), $ttl);

        return $value;
    }

    public static function __callStatic($name, $arguments)
    {
        return self::getInstance()->$name(...$arguments);
    }
}


怎么能少了我们的remeber方法啊


$user_city = Cache::remember("user_city|uid:{$user['id']}", 3600, function () use ($user) {
    return UserCityModel::where('uid', $user['id'])->orderBy('type')->get();
});


这样用起来就很爽

扫描二维码至手机访问

扫描二维码推送至手机访问。

版权声明:本文由何烦过虎溪发布,如需转载请注明出处。

转载请注明出处:http://95shouyou.com/?id=21

标签: hyperf缓存
分享给朋友:

相关文章

Hyperf表单数据验证器

Hyperf表单数据验证器

hyperf虽然基于swoole,但是风格很像laravel,所以上手还是挺快的。记录一下基于hyperf的表单验证器的代码。因为写代码喜欢一把梭,所以太过解耦的验证类就不用了,太麻烦了。简单一点。照...

Hyperf跨域问题的解决方案

Hyperf跨域的问题解决方案在传统框架中一般来说有两种方案例如在laravel中直接在入口文件index.php中加上允许跨域代码,或者通过nginx反向代理配置在laravel中header(&#...

Hyperf的redis异步队列实战

突发奇想想写一个RTS战略类游戏。RTS战略类游戏核心玩法肯定是有养成啊,比如建筑升级啊,征兵队列啊,之类的,总之就是用户现在点了操作但是拿不到结果,可能要等几十分钟或者更久拿到结果。现在我们来实现以...

Hyperf中间件验证用户登录状态

才开始接触hyperf,就被他惊人的并发处理性能所惊呆了。所以在工作空余之时学习一下hyperf。今天要学习一下hyperf的中间件的使用。新建一个中间件,主要功能就是取每次请求的header头里面的...

Hyperf异常类,抛出异常并中断执行

Hyperf异常类,抛出异常并中断执行

在我们的传统的php框架中,我个人习惯代码需要分层的。例如分为 Controller层,Service层,Model层。Controller层就是做个参数接收啊,参数验证之类的事情,然后Service...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。