如何使用Redis+SpringBoot实现定时任务测试
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章主要介绍"如何使用Redis+SpringBoot实现定时任务测试",在日常操作中,相信很多人在如何使用Redis+SpringBoot实现定时任务测试问题上存在疑惑,小编查阅了各式资料,整理
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
软件测试需要会软件开发吗
公司网络安全管理制度体系情况
光伏电站网络安全工程师
普洱互联网科技怎么样
中专学历学软件开发好就业吗
如何学好安全计算软件开发
放开那三国橙卡武将数据库
加强维护数据库英语作文
网络安全自创童谣
如何利用网络安全技术
计算机软件开发有没用
上海质量软件开发
小学生的网络安全手抄报内容
获取数据库表子段
如何建数据库索引
铜川ar软件开发报价
博易大师电脑登录无法连接服务器
软件开发测试自己剪刘海
福建云主机品牌云服务器
特雅丽拼接屏服务器
有关软件开发的创业计划书
抖音 苹果服务器异常
网络安全规章制度敏感词汇
jst数据库
关于网络技术发展的实训报告
数据库字段的检查
多台服务器可以同时管理吗
aix服务器hmc管理
浦东新区制造软件开发项目信息
数据库如何表示第一个子元