我们可以用这个方式进行订单超时未支付处理,就不用再写定时器查询了。等等还有很多业务可以用上
1.添加pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.添加 RedisMessageListenerContainer配置类
@Configuration
public class RedisListenerConfig {
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
}
3.添加监听代码
@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
/**
* 针对redis数据失效事件,进行数据处理
*
* @param message
* @param pattern
*/
@Override
public void onMessage(Message message, byte[] pattern) {
// 用户做自己的业务处理即可,message.toString()可以获取失效的key
String expiredKey = message.toString();
System.out.println("redis key失效 回调方法,key:" + expiredKey);
}
}
4. 必须要在redis.conf 中开启 key失效唤醒时间通知
# key失效事件回调通知开启
notify-keyspace-events Elg