如何使用Redis+SpringBoot实现定时任务测试
发表于:2025-01-30 作者:千家信息网编辑
千家信息网最后更新 2025年01月30日,这篇文章主要介绍"如何使用Redis+SpringBoot实现定时任务测试",在日常操作中,相信很多人在如何使用Redis+SpringBoot实现定时任务测试问题上存在疑惑,小编查阅了各式资料,整理
千家信息网最后更新 2025年01月30日如何使用Redis+SpringBoot实现定时任务测试
这篇文章主要介绍"如何使用Redis+SpringBoot实现定时任务测试",在日常操作中,相信很多人在如何使用Redis+SpringBoot实现定时任务测试问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用Redis+SpringBoot实现定时任务测试"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
Redis实现定时任务是基于对RedisKey值的监控
具体代码实现:
建一个SpringBoot项目
引入依赖
4.0.0 org.springframework.boot spring-boot-starter-parent 2.4.4 com.example redistask 0.0.1-SNAPSHOT redistask Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-data-redis org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
配置文件
spring.redis.host=127.0.0.1spring.redis.port=6379spring.redis.timeout=10000
新建一个配置类
package com.zhouhong.redistask.redistaskconfig;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.listener.RedisMessageListenerContainer;/** * description: Redis配置类 * @author: zhouhong * @version: V1.0.0 * @date: 2021年3月19日 上午10:58:24 */@Configurationpublic class RedisTaskConfig { @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory);return container; }}
新建Controller,设置不同过期时间的Key值,注意这里key值最好使用当前的业务标识做前缀,不然可能出现key重复的现象。
package com.zhouhong.redistask.redistaskcontroller;import java.util.Date;import java.util.concurrent.TimeUnit;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;/** * description: 测试Redis定时Controller类 * @author: zhouhong * @version: V1.0.0 * @date: 2021年3月19日 上午10:59:21 */@RestControllerpublic class RedisTaskController { @Autowiredprivate RedisTemplate< String, String> template; Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);/** * 设置定时key,这里key最好使用业务前缀,防止名字相同 * @return */@RequestMapping(value = "putkeys", method = RequestMethod.POST)public String putRedisTaskKeys() { Date date = new Date(); logger.info("业务开始时间:" + date); String key10S = "business1"+"|"+"key10S"+"|"+"其他业务中需要使用到的参数"; String key20S = "business1"+"|"+"key20S"+"|"+"其他业务中需要使用到的参数"; template.opsForValue().set(key10S, "values", 10, TimeUnit.SECONDS); template.opsForValue().set(key20S, "values", 20, TimeUnit.SECONDS);return "RedisKey过期键设置成功"; } }
新建Service用来监控过期Key,并且针对不同时间做不同的业务
package com.zhouhong.redistask.service;import java.util.Date;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.springframework.data.redis.connection.Message;import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;import org.springframework.data.redis.listener.RedisMessageListenerContainer;import org.springframework.stereotype.Component;import org.springframework.stereotype.Service;/** * description: RedisKey键监听以及业务逻辑处理 * @author: zhouhong * @version: V1.0.0 * @date: 2021年3月19日 上午10:58:52 */@Service@Componentpublic class RedisTaskService extends KeyExpirationEventMessageListener { Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);/** * @param listenerContainer */public RedisTaskService(RedisMessageListenerContainer listenerContainer) { super(listenerContainer); } @Overridepublic void onMessage(Message message, byte[] pattern) { String expiredKey = message.toString(); // 将拿到的过期键使用之前拼接时的特殊符号分割成字符数组String[] expiredKeyArr = expiredKey.split("\|"); String businessSign = expiredKeyArr[0].toString(); String expiredTimeSign = expiredKeyArr[1].toString(); String othersParm = expiredKeyArr[2].toString(); logger.info(businessSign + expiredTimeSign + othersParm); Date date = new Date();// 只有本业务才执行以下操作if (businessSign.equals("business1")) {if (expiredTimeSign.equals("key10S")) {// 定时十秒钟后业务处理logger.info("十秒钟时的时间:"+ date); logger.info("定时任务10秒钟已到,下面处理相关业务逻辑代码!!!"); logger.info("10秒钟后的业务逻辑代码,其他业务参数" + othersParm); } else if (expiredTimeSign.equals("key20S")) {// 定时十秒钟后业务处理logger.info("二十秒钟时的时间:"+ date); logger.info("定时任务20秒钟已到,下面处理相关业务逻辑代码!!!"); logger.info("20秒钟后的业务逻辑代码,其他业务参数" + othersParm); } } else { logger.error("非business1业务不做处理"); } }}
演示:
定时成功!!
到此,关于"如何使用Redis+SpringBoot实现定时任务测试"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
业务
任务
处理
测试
代码
时间
逻辑
参数
学习
不同
配置
成功
前缀
更多
最好
帮助
监控
实用
特殊
相同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
2020网络安全股排名
tbc 数据库 bis
网络安全学院落地武汉
软件开发FPA表
云天服务器
小度你的服务器
服务器获取客户端路由器信息失败
端口映射 虚拟服务器
富优网络技术有限公司
企业租车软件开发
倩女幽魂服务器千年缘
脑网络技术
家常菜下载软件开发
泰州大型网络技术价格表格
云服务器部署网心云
浪潮数据中心哪个服务器好
上海发展软件开发项目信息
厦门软件开发中小型企业
大同要建数据库吗
寻找软件开发合伙人融资
松江区网络技术咨询售后服务
蓝启网络技术有限公司
幼儿园大班网络安全教育宣传总结
宜章学it软件开发招生
网络安全保密保证
网络安全红蓝军对抗演练
国际网络安全事件分析
云有互联网科技有限公司
网络安全管理师的资格
普陀区软件开发发展