SpringCache和SpringTask

2024-06-08 07:04
文章标签 springtask springcache

本文主要是介绍SpringCache和SpringTask,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SpringCache

在启动类上加EnableCaching注解

我们只要在Controller上写一个SpringCache相应的注解

我们就能实现缓存了

简化缓存操作代码,提高我们的效率

我们默认是我们的spring做缓存

但我们还可以替换我们的缓存技术

例如

EhCache

Google

Redis

来作为缓存技术

 


我们是通过这个接口,CacheManager接口来实现的


4个常用注解 


有三个注解

Cacheput

CacheEvict

CacheEnable


使用Cacheput注解

我们添加缓存时使用

我们在这个Controller中

注入了我们的CacheManager对象

我们在启动类上加了EnableCaching注解

我们在新增操作上写这个,然后value是这个缓存的名称

 

可以存很多的缓存在一个value

然后我们有个key,来作为表示

 #result

我们的key可以通过spring内置语言来写,#result,就是我们当前方法的返回值

#root

可以获取到当前的这个方法

拿到参数值

我们可以和参数名对应,然后来拿到它的参数值

 存储于内存

其实我们这个存储是基于内存的,重启服务后我们就没有了

使用CacheEvict注解

我们删除缓存的时候用

#root.args[0]

 获得方法的第几个参数

#p0

也可以用p0这种写法,指定时第几个参数


使用CacheEnable

这个用在我们的查询方法上

查询之前看看我们有没有

存入空缓存

这个很吊,如果我们过来,然后我们查询数据库为空

condition

condition是满足什么条件的时候,我们才缓存


 使用Spring内置语言的小问题

其实我们这里是不能使用Result的

Cacheable()里面的condition使用的内置对象只有root,和一些参数(这个参数有使用限制)

我们使用condition的时候,我们Spring内置对象不能使用返回结果#result

所以我们可以使用unless,这个和condition相反

我们就可以使用#result了


技术换型,使用Redis

首先要引入我们的依赖

Spring-boot-starter-cache依赖

配置yml文件

设置缓存有效期

我们可以直接在配置文件中,配置time-tolive来设置这个缓存的有效期

我们这样就把我们底层缓存的产品换成了Redis


SpringTask

SpringTask是什么

springtask是spring框架的一个定时任务

是spring提供的任务调度工具,按照约定的时间自动执行某个代码逻辑

作用:定时自动执行某段java代码

例如闹钟


应用场景

信用卡提醒还贷

花呗提醒还款

火车票售票系统处理未支付订单

纪念日发送通知


Cron表达式

我们的springtask要写我们的cron表达式

定时任务触发


什么是Cron表达式

 

通常

周和日是很难同时确定的,所以我们这两个

如果另一个确定了另一个就填写❓

但还是有问题,例如我们想要2月份的最后一天

是28还是29?

我们直接写的话肯定不好,会出错的

但是为了描述这种具体的细节呢,我们会有一些特殊的字符

我们没必要去手写我们的cron表达式,我们有cron表达式自动生成的网站


入门案例

添加EnableScheduling注解

在启动类上添加我们的EnableScheduling注解,开启我们的任务调度

我们的定时任务类上要加我们的Componet注解

这样我们才能成功使用Shceduled注解(写我们的Cron表达式)

然后定义我们的方法,我们的方法是void类,是没有返回值的


需求分析(经典使用)

我们一分钟检查一次,看看是否有超时订单

我们的订单不可能一直时派送状态

过了一定的时间我们要处理一下这个状态

 

我们写sql语句,查出超时15分钟的订单,然后把订单状态设置成已经取消

plusMinute方法

LocalDateTime有个plusMinute方法,可以加减时间

为了防止日志同时输出,控制台很难观察

 修改程序启动时,我们的定时任务的启动时间

所以我们一个从1秒开始,5秒触发一次

一个从0秒开始,5秒触发一次

这篇关于SpringCache和SpringTask的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1041477

相关文章

SpringTask定时任务笔记

1 简介 Spring Task 是 Spring 框架中用于调度和管理定时任务的模块。它提供了简单、灵活且强大的任务调度功能,可以帮助开发者在应用程序中轻松实现任务的自动执行。 Spring Task 常用于以下场景: 定时任务:如定时生成报告、清理临时文件、发送邮件提醒等。异步任务:可以在应用程序主线程之外执行一些异步任务,不会阻塞主线程。周期性任务:周期性地执行某些操作,如定期同步数据、

SpringCache源码解析(一)

一、springCache如何实现自动装配 SpringBoot 确实是通过 spring.factories 文件实现自动配置的。Spring Cache 也是遵循这一机制来实现自动装配的。 具体来说,Spring Cache 的自动装配是通过 org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration 这个类来实现

任务调度SpringTask入门

任务调度简介 1.1什么是任务调度 在企业级应用中,经常会制定一些“计划任务”,即在某个时间点做某件事情,核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作。常见的任务调度框架有Quartz和SpringTask等。 SpringTask入门 1.2 SpringTask入门小Demo 创建模块52xbc-task-service,引入spring相关依赖 dao 和comm

SpringTask Cron表达式

Cron表达式格式 1.Cron表达式格式 Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: 秒 分 时 一个月第几天 月 一个星期第几天 年 (1)Seconds Minutes Hours DayofMonth Month DayofWeek Year (2)Seconds M

SpringTask定时任务框架

文章目录 介绍使用 介绍 SpringTask定时任务框架,与手机上定时任务类似cron表达式本质是字符串6/7个域,不同域用空格隔开:秒、分钟、小时、日、月、周、年(可选)日与周只能定义一个,用?表达不使用在线生成器:https://cron.ciding.cc/在线生成器:https://cron.qqe2.com/ 使用 1. 导入maven坐标spring-con

SpringTask-Timer实现定时任务

1、Timer 实现定时任务 1.1、JDK1.3 开始推出定时任务实现工具。 1.2、API 执行代码 public static void main(String[] args) throws ParseException {Timer timer = new Timer();String str="2024-06-10 23:24:00";Date date = ne

Springboot整合SpringCache+redis简化缓存开发

使用步骤: 1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactI

SpringCache学习笔记

目录 1 概述1.0 Redis访问工具1.1 SpringCache介绍 2 入门使用2.1 入门使用2.1.1 依赖导入2.1.2 环境配置2.1.3 缓存配置类定义 2.2 SpringCache注解详解2.2.1 @Cacheable注解2.2.2 @CacheEvict注解2.2.3 @CachePut注解2.2.4 @Caching注解2.2.5 注解小结 2.3 SpringC

苍穹外卖07(缓存菜品,SpringCache,缓存套餐,添加购物车菜品和套餐多下单,查看购物车,清除购物车,删除购物车中一个商品)

目录 一、缓存菜品 1 问题说明 2 实现思路 3 代码开发:修改DishServiceImpl 4 功能测试 二、SpringCache 1. 介绍 2. 使用语法 1 起步依赖 2 使用要求 3 常用注解 4 SpEL表达式(了解备用) 5 步骤小结 3.入门案例 1 准备环境 2 使用入门 1 引导类上加@EnableCaching 2 更新缓存加@C

SpringCloud的bug:高并发下SpringCache分布式缓存坑JedisDataException: ERR unknown command 'EXEC'

SpringCloud的bug:高并发下SpringCache分布式缓存坑JedisDataException: ERR unknown command ‘EXEC’ 请看如下: http://39.108.82.198:8080/help/postsdetial/765