如何使用Redis+SpringBoot实现定时任务测试
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"如何使用Redis+SpringBoot实现定时任务测试",在日常操作中,相信很多人在如何使用Redis+SpringBoot实现定时任务测试问题上存在疑惑,小编查阅了各式资料,整理
千家信息网最后更新 2026年11月01日如何使用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安全错误
数据库的锁怎样保障安全
天津市摩尔互联网科技
互联网科技财经
美国互联网科技巨头监管
深圳科技互联网
以房互联网科技
远拓互联网科技
上海喔噻互联网科技
睿民互联网科技
有木互联网科技
西藏七维空间互联网科技有限公司
互联网企业和科技型企业
栖莱科技互联网股份有限公司
互联网金融中的现代科技
烟台灵鸽互联网科技有限公司
上海钢联属于互联网科技股吗
互联网领先科技宣传片
上海创道互联网络科技有限公司
上海同邻互联网科技有限公司规模
保山浩联互联网科技有限公司
互联网企业和网络科技有限公司
精品咖啡豆
江苏根荣互联网科技
互联网属科技
互联网 科技创业
奔汉互联网科技
猫创互联网科技
深圳期待互联网科技
互联网 科技服务平台
朱啸虎曾投资哪些互联网科技企业
21世纪互联网科技成就