前言
背景:在面试时被面试官问到项目中如何更新点赞数和回复,因为我说将点赞数和回复保存在redis中降低数据库压力,但是在点赞数和回复更新时数据无法同步到数据库,如果每一次更新都先更新数据库再删除缓存就本末倒置了,所以使用定时任务来定时更新数据库
准备
pom.xml导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
定时任务配置类
@Configuration
public class QuartzConfig {
@Bean("QuartzJob")
public JobDetail MyJobDetail() {
return JobBuilder.newJob(QuartzJob.class)
.withIdentity("DateTimeJob")
.usingJobData("msg", "********")
.storeDurably()
.build();
}
@Bean
public Trigger printTimeJobTrigger() {
// 每5秒执行一次
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
return TriggerBuilder.newTrigger()
.forJob(helloJobDetail())
.withIdentity("quartzTaskService")
.withSchedule(cronScheduleBuilder)
.build();
}
}
定义Job
@Component
public class QuartzJob extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
System.out.println("***在这里执行相应的代码***");
System.out.println("************************");
}
}
到此基本已经配置完毕
测试
启动项目,可在控制台看见每5秒执行一次输出