SpringBoot整合redis实现过期key监听事件

 

Spring整合redis实现key过期事件监听:https://www.cnblogs.com/pxblog/p/13969375.html

 

可以用于简单的过期订单取消支付、7天自动收货场景中

 

1、Spring Boot整合redis 参考

https://www.cnblogs.com/pxblog/p/12980634.html

 

2、打开redis服务的配置文件   添加notify-keyspace-events Ex  如果是注释了,就取消注释

 

 然后重启redis

 

 

Linux安装redis:https://www.cnblogs.com/pxblog/p/12225758.html

Windows安装redis:https://www.cnblogs.com/pxblog/p/13370729.html

 

3、在redis配置类 @Configuration 添加如下内容

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

 

4、新建过期Key监听

RedisKeyExpirationListener.java

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;

@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) {
        System.out.println("过期"+message.toString());
    }
}

 

使用方式

//把key放进redis中,并设置过期时间为三秒,也可以按照自己的写法
 redisService.set(key,key, 3);

 

posted @ 2020-08-25 13:58  yvioo  阅读(3477)  评论(0编辑  收藏  举报