最近写了个定时的任务,不知道怎么做,查资料后用redis事件监听可以做,后来完成了,分享给有需要的朋友。
参考:https://blog.csdn.net/qq_39648029/article/details/105072079
/*redis监听过期时间设置*/
public class KeyExpiredListener extends KeyExpirationEventMessageListener {
public KeyExpiredListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
@Override
public void onMessage(Message message, byte[] pattern) {
System.out.println("过期key:" + message.toString());
String inquiryEnquiryNumber = new String(message.getBody());
System.out.println(inquiryEnquiryNumber);
if(inquiryEnquiryNumber.startsWith("CLEAN")) {
//此处为获取的redis中key值中开头是否是“CLEAN”的判断,是了就执行接下来的操作
}
}
}
/*redis监听过期时间设置*/
@Configuration
public class RedisConfiguration {
@Autowired
private RedisConnectionFactory redisConnectionFactory;
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer() {
RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
return redisMessageListenerContainer;
}
@Bean
public KeyExpiredListener keyExpiredListener() {
return new KeyExpiredListener(this.redisMessageListenerContainer());
}
}
//测试
@RequestMapping("qq")
@ResponseBody
public JsonResult showLiddne(HttpServletRequest request){
Jedis jedis = redisUtil.getJedis();
jedis.setex("aaa",1*10,"bbb");
// String value = jedis.get("aaa");
return null;
}
@RequestMapping("ww")
@ResponseBody
public String showLxxiddne(HttpServletRequest request){
Jedis jedis = redisUtil.getJedis();
String value = jedis.get("aaa");
return value;
}