hyperf中的缓存之CacheEvict

news2025/1/14 19:33:05

在开发中难免会遇到要批量删除一些缓存,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MS 训练笔记【1】:nnUNet

文章目录前言1. 安装2. 训练与测试2.1. 数据处理2.1.1. 整理数据路径2.1.2. 设置 nnFormer 读取文件的路径2.1.3. 数据集预处理2.2. 训练2.2.1. 训练代码2.2. 预测总结前言 nnUNet是德国癌症研究中心的工程师编写的框架,迄今为止依旧在维护和更新。本文主要记载 nn…

FBX模型

概览 fbx文件,一般是导出给unity使用的模型文件。 如下图所示,建立一个models目录,然后右击,选择 imoprt new asserts 即可导入这些文件。 展示如下,Mesh定义了形状。 铅笔也是同理,只不过铅笔有自己的贴图…

尚医通-前端列表(十一)

目录: (1)搭建前端环境 (2)目录结构和登录改造 (3)医院设置前端-列表 (1)搭建前端环境 vue-element-admin 简介 vue-element-admin是基于element-ui 的一套后台管理系…

计算机系统基础实验 - 数的机器级表示

实验1 数的机器级表示 实验序号:1 实验名称:数的机器级表示 适用专业:软件工程 学时数:2学时 一、实验目的 1.熟练掌握无符号整数的机器级表示 2.熟练掌握有符号整数的机器级表示 3.熟练掌握浮点数的机器级表示 二、实验要求 …

WORDPRESS WOOCOMMERCE购物网站安装AB跳转支付插件接口的教程

本文介绍在Wordpress Woocommerce购物系统上安装支付插件,并且对接《品牌出海AB跳转收单系统》的方法,以下是图文教程 注意本教程是采用Wordoress中文版本后台截取的图例,英文版本后台文字略有不同; 1、首先打开支付插件压缩包&…

反编译python 生成的exe源码

反编译python 生成的exe源码记录反编译exe工具使用 工具准备 – pyinstxtractor.py – uncompyle6 – sublime Text(或者其他的二进制编辑工具) 一、解包(exe) ①:先把下载的pyinstxtractor.py文件和需要进行反编译的…

π120M60代替ADuM2210SRIZ 双通道数字隔离器 电路简单速度快

π120M60代替ADuM2210SRIZ 双通道数字隔离器 电路简单速度快。具有出色的性能特征和可靠性,整体性能优于光耦和基于其他原理的数字隔离器产品。传输通道间彼此独立,可实现多种传输方向的配置,可实现 5.0kV rms 隔离耐压等级和 DC 到 10Mbps 信…

下载和安装MySQL官方提供的示例数据库(Employees)

一、前言 在此之前笔者写过一篇博客《你说精通MySQL其实很菜jī(1):你不一定会的基本技巧或知识点(值得一看)》,本文内容是从那篇博客截取出来的。我们要学习MySQL相关的技术点,使用官方提供的测…

构造HTTP请求

构造HTTP请求一、浏览器自己构造二、通过 form 表单构造三、通过 ajax 构造一、浏览器自己构造 1)地址栏里写URL,构造出GET请求 2)点击a标签等,也会构造GET请求 3)img、link、script也会构造GET请求 二、通过 form 表…

Java中的常用队列

🏆今日学习目标: 🍀Java中的常用队列 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页 🍁林在闪闪发光的个人社区,欢迎你的加入: 林在闪闪…

【Django】第二课 基于Django图书借阅管理网站平台

概念 本文在上一篇文章之上完成登录,图书显示,关键字搜索以及分页功能 登录功能实现 当用户在首页进行输入学生用户信息后,点击登录按钮发送请求给服务器,地址请求为: /toLogin/ urls.py path(toLogin/,views.toLogin), 将接…

ArcGIS基础实验操作100例--实验3旋转矢量要素

实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 基础编辑篇--实验3 旋转矢量要素 目录 一、实验背景 二、实验数据 三、实验步骤 (1)加载【旋转】工具 (2)旋转矢量要素 一…

灵龟八法推算

很久之前就对这个算法感兴趣了,但是一直没搞定,网上公说公的,婆说婆的,搞得你头晕眼睛花,最后东拼西凑研究了好久才研究出来,在这里给大家分享。 第一步,掏出你的老黄历,如果你没有老黄历问题不…

BUUCTF Misc 弱口令 [RoarCTF2019]黄金6年 小易的U盘 [WUSTCTF2020]alison_likes

目录 弱口令 [RoarCTF2019]黄金6年 小易的U盘 [WUSTCTF2020]alison_likes 弱口令 下载文件 一个压缩包,需要密码,爆破了一会没出结果,百度了一下竟然有提示 蓝色内容复制到sublime查看(记事本也不能看) 摩斯密码&…

vue-cli2配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)

vue-cli区分办法 vue配置生产环境.env.production、测试环境.env.development vue配置webpack生产环境、测试环境 在使用webpack创建完vue2项目的时候,为了解决生产打包、测试打包对应的全局变量不一致的问题。 首先看一下package.json的改动: "…

【Git】一文带你入门Git分布式版本控制系统(创建版本库、 版本回退)

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端 📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀未…

改变您对Fedora的印象

导读我是 Fedora 的老用户了,从四年前接触嵌入式 Linux 开始,Fedora 就是我的桌面操作系统,期间从未被其他操作系统替代过,偶尔尝试也会第二天就装回来。用得愈久愈是喜欢,简洁、漂亮、稳定,无一不击中我&a…

OpenGL学习(基础光照)

这些光照模型都是基于我们对光的物理特性的理解。其中一个模型被称为冯氏光照模型(Phong Lighting Model)。冯氏光照模型的主要结构由3个分量组成:环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照 环境光照 全局照明(Global Illumination)算法,但是…

吴恩达《机器学习》——线性回归代码实现

线性回归1. 单变量线性回归单变量线性回归公式损失函数优化算法——批梯度下降(BGD)2. 多变量线性回归特征缩放(标准化)参数的逆缩放3. 线性回归算法代码实现向量实现Python代码4. 实验结果单变量回归多变量回归实验总结数据集、源…

使用C#开发Word VSTO外接程序示例

目标:实现类似word中导航栏视图的功能。 创建新项目,选择模板“Word VSTO 外接程序”。选择工程,新建项目---新建功能区(可视化设计器)双击打开新建的可视化编辑器,编辑容器RibbonGroup在容器RibbonGroup里…