微信亿级在线点赞体系,用Redis怎样实现?
private static final String LIKE_TASK_IDENTITY = "LikeTaskQuartz";
@Bean public JobDetail quartzDetail(){ return JobBuilder.newJob(LikeTask.class).withIdentity(LIKE_TASK_IDENTITY).storeDurably().build(); }
@Bean public Trigger quartzTrigger(){ SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule() // .withIntervalInSeconds(10) //配置时刻周期单元秒 .withIntervalInHours(2) //两个小时执行一次 .repeatForever(); return TriggerBuilder.newTrigger().forJob(quartzDetail()) .withIdentity(LIKE_TASK_IDENTITY) .withSchedule(scheduleBuilder) .build(); } } ③编写执利用命的类担任自 QuartzJobBean package com.solo.coderiver.user.task;
import com.solo.coderiver.user.service.LikedService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.time.DateUtils; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.quartz.QuartzJobBean;
import java.text.SimpleDateFormat; import java.util.Date;
/** * 点赞的按时使命 */ @Slf4j public class LikeTask extends QuartzJobBean {
@Autowired LikedService likedService;
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info("LikeTask-------- {}", sdf.format(new Date()));
//将 Redis 里的点赞信息同步到数据库里 likedService.transLikedFromRedis2DB(); likedService.transLikedCountFromRedis2DB(); } } 在按时使命中直接挪用 LikedService 封装的要领完成数据同步。 以上就是点同意果的计划与实现,不敷之处还请列位大佬多多指教。若有更好的实现方案接待在评述区交换。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |