使用Redis的Key过期回调 ,实现订单超时关闭

流程

1. 下单  存redis  key(token)  value(orderId)  ex失效时间  

2. 超时redis的key回调方法. 判断key在库中订单状态

3.根据订单状态,做业务处理

具体操作

1.redis配置文件开启key过期回调

使用Redis的Key过期回调 ,实现订单超时关闭_第1张图片

2.监听接口

@Configuration
public class RedisListenerConfig {

    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory factory){
        RedisMessageListenerContainer container=new RedisMessageListenerContainer();
        container.setConnectionFactory(factory);
        return container;
    }
}

3.重写失效回调方法(这里的redis 的 key 最好做前缀处理,判断key前缀匹配然后查询 ,或者选定特定的库存储)

@Component
public class RedisKeyExpirationListerner extends KeyExpirationEventMessageListener {

    public RedisKeyExpirationListerner(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }

    /**
     * 使用该方法监听 ,当我们的key失效的时候执行改方法
     */
    @Override
    public void onMessage(Message message, byte[] pattern) {
        String keyExpira = message.toString();
        System.out.println("keyExpira======>>>>>>"+keyExpira);
        //拿到过期key ,处理业务逻辑
    }
}

4.测试回调 ,开启redis客户端 存值设置超时时间2秒 

4.使用Redis的Key过期回调 ,实现订单超时关闭_第2张图片

你可能感兴趣的:(redis)