hyperf中的缓存之CacheEvict

7 篇文章 0 订阅
4 篇文章 0 订阅

在开发中难免会遇到要批量删除一些缓存,hyperf的注解中提供了关于缓存的几个注解如下

Cacheable 生成缓存的,根据你的返回值生成缓存

参数($prefix, $value, $ttl, $listener, $offset, $group, $collect)

CachePut 更新缓存

参数($prefix, $value, $ttl, $offset, $group, $collect)

CacheEvict 注解是来删除缓存的,CacheEvict注解是基于AOP的机制实现的

参数($prefix, $value, $all, $group, $collect)

 

一般我们定义缓存的时候会定义成关键业务的名称加 : 在redis的工具中 :代表的是一个目录的

比如我们要定一个班级里的满分学生的的缓存  Class:100

在hyperf框架中定义逻辑的时候只需要加上注解

#[Cacheable(prefix: 'class:100', value: "_#{params.classId}", ttl: 60)]
public function student(array $params)
{
    return ['张三','李四',,,,];
}

CachePut 当我们想更新缓存时,可以调用相关方法,,比如官方提供的例子

use App\Models\User;
use Hyperf\Cache\Annotation\CachePut;

/**
 * @CachePut(prefix="user", ttl=3601)
 */
public function updateUser(int $id)
{
    $user = User::query()->find($id);
    $user->name = 'HyperfDoc';
    $user->save();

    return [
        'user' => $user->toArray(),
        'uuid' => $this->unique(),
    ];
}

主要记录一下CacheEvict的用法

#[CacheEvict(prefix: 'class', all: true)]

all 为true的时候是代表要把以class:开头的所有的key都删除掉

value 有值时 是指删除指定的key

需要注意的是,所有的key都要是以class:开头的,prefix的值不需要带:

//删除之后删除所有缓存class:开头的缓存
#[CacheEvict(prefix: 'class', all: true)]
public function delete()
{
    return true 
}

 下面是AOP的具体代码,可以看到是key的sacn每次获取10000个key

 

 如果想修改可以自定义cache.php里的自定义driver,自己进行实现一些缓存删除的时间的通知等

比如要在删除某一个缓存的时候进行短信的通知,可以自己实现driver里的clearPrefix

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢高升

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值