spring boot 定时任务更新浏览数、点赞数

SpringBoot配置定时任务可以直接使用自带的Scheduled,这相当于一个轻量级的Quartz,它可以让我们直接使用注解来完成定时任务的配置。

1.定时任务方法
/**
 * 定时任务
 *
 * @author <a href="mailto:lyj@zjtachao.com">lyj</a>
 * @since 2.0
 */
@Configuration
@EnableScheduling
public class TigerDataApproveTask {


    /** 日志 **/
    public static final Logger logger = LoggerFactory.getLogger(TigerDataApproveTask.class);

    @Resource
    public WaterRedis waterRedis;

    /** 拳手信息service */
    @Resource
    private TigerDataBoxerBaseInfoService tigerDataBoxerBaseInfoService;

    

    /**
     * 保存点赞数 、浏览数
     */
    @Scheduled(cron="1 * * * * *")
    public void executeSaveApproveNum(){
        try{
            logger.info("开始保存点赞数 、浏览数");

            //取出浏览数的 key
            Set<String> viewSet = waterRedis.smembers(TigerCommonConstant.TIGER_DATA_VIEW_COUNT_KEY);
            //删除浏览数的 key
            waterRedis.delete(TigerCommonConstant.TIGER_DATA_VIEW_COUNT_KEY);
            //保存浏览数
	if(null != viewSet && !viewSet.isEmpty()) {
                for (String boxerCode : viewSet) {
                    long viewCount = waterRedis.increment(TigerCommonConstant.TIGER_DATA_SAVE_VIEW_COUNT_CODE_KEY+boxerCode , 0, 0);
                    if (0 != viewCount) {
                        //保存数据库
                        TigerBoxerBaseInfo boxerBaseInfo = new TigerBoxerBaseInfo();
                        boxerBaseInfo.setBoxerCode(boxerCode);
                        boxerBaseInfo.setVisitNum(viewCount);
                        tigerDataBoxerBaseInfoService.updateBoxerApprove(boxerBaseInfo);
                    }
                }
            }

            //取出点赞数量的 key
            Set<String> approveSet = waterRedis.smembers(TigerCommonConstant.TIGER_DATA_APPROVE_COUNT_KEY);
            //删除点赞数量ID的 key
            waterRedis.delete(TigerCommonConstant.TIGER_DATA_APPROVE_COUNT_KEY);
            //保存点赞数
	if(null != approveSet && !approveSet.isEmpty()){
                for (String boxerCode: approveSet) {
                    long approveCount = waterRedis.increment(TigerCommonConstant.TIGER_DATA_SAVE_APPROVE_COUNT_CODE_KEY+boxerCode,0,0);
                    if(0 != approveCount){
                        //保存数据库
                        TigerBoxerBaseInfo boxerBaseInfo = new TigerBoxerBaseInfo();
                        boxerBaseInfo.setBoxerCode(boxerCode);
                        boxerBaseInfo.setApproveNum(approveCount);
                        tigerDataBoxerBaseInfoService.updateBoxerApprove(boxerBaseInfo);
                    }
                }
			}

            logger.info("结束保存点赞数 、浏览数");
        }catch (Exception ex){
            logger.error("生成保存点赞数 、浏览数" ,ex);
        }
    }

}
2.代码中增加浏览 、点赞,用到了redis的set,存需要更新的数据的主键

 //保存 浏览数量的 key                 waterRedis.sadd(TigerCommonConstant.TIGER_DATA_VIEW_COUNT_KEY,tigerBoxerBaseInfoRo.getBoxerCode());
 //每次调用接口,浏览数量增加1                    waterRedis.increment(TigerCommonConstant.TIGER_DATA_SAVE_VIEW_COUNT_CODE_KEY+tigerBoxerBaseInfoRo.getBoxerCode(),1)
//保存 点赞数量ID的 key
waterRedis.sadd(TigerCommonConstant.TIGER_DATA_APPROVE_COUNT_KEY,boxerCode);
//每次调用接口,点赞数量增加1
 waterRedis.increment(TigerCommonConstant.TIGER_DATA_SAVE_APPROVE_COUNT_CODE_KEY+boxerCode,1);
3.定义的redis的key

    /** 保存 浏览数量增加1 的 key**/
    public static final String TIGER_DATA_VIEW_COUNT_KEY = "tiger:boxer:task:view.count.key";

    /** 保存拳手 浏览数量的 key**/
    public static final String TIGER_DATA_SAVE_VIEW_COUNT_CODE_KEY = "tiger:boxer:task.view.count.code.key.";

    /** 保存 点赞数量增加1 的 key**/
    public static final String TIGER_DATA_APPROVE_COUNT_KEY = "tiger:boxer:task:approve.count.key";

    /** 保存拳手 点赞数的 key**/
    public static final String TIGER_DATA_SAVE_APPROVE_COUNT_CODE_KEY = "tiger:boxer:task.approve.count.code.key.";
4.cron

1 * * * * * 
每分钟更新一次






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值