使用: 在项目中使用,订单超时未支付则取消订单
1.定义配置Redis监听配置
/**
*定义配置RedisListenerConfig
* @author bright
* @date 2019/3/5
*/
@Configuration
public class RedisListenerConfig {
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
}
2.监听所有db的过期事件
/**
* 监听所有db的过期事件
* @author bright
* @date 2019/3/5
*/
@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();
String SystemCancelTime = "SystemCancelTime";
if(expiredKey.contains(SystemCancelTime)){
//处理业务
}
}
}
3.使用
// redis过期机制,取消过期订单
String key = "SystemCancelTime" + orders.getId();
Long second = configKey*60L;
redisService.set(key,orders.getId(),second);