spring boot 实现redis 的key的过期监听,执行自己的业务

最近几天进一步了解了一下redis,发现了key的过期监听功能,实现方式如下:

在redis的配置文件 redis.conf 中找到"EVENT NOTIFICATION"模块, 解开注释 notify-keyspace-events Ex ;或者在这个模块后增加 notify-keyspace-events Ex 。 来开启key的过期监听, 因为redis默认是关闭的。

然后在spring boot 项目中添加配置类代码如下:

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

然后新增key的监听类继承 KeyExpirationEventMessageListener ,并重写 有参构造和onMessage方法, 注意onMessage方法并不是KeyExpirationEventMessageListener 类的方法,而是 KeyExpirationEventMessageListener 的父类KeyspaceEventMessageListener的方法,如果不想重写此方法那么可以重写KeyExpirationEventMessageListener 的方法doHandleMessage方法也是可以的。代码如下:

@Slf4j 
@Component 
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
      @Autowired     
       private RiskService riskService;     
       @Autowired     
       private OrderService orderService;      
       public RedisKeyExpirationListener(RedisMessageListenerContainer 
                      listenerContainer) {        
               super(listenerContainer);     
        }    
        
         @Override     
         public void onMessage(Message message, byte[] pattern) {
               // 此值就是key值
               String key = message.toString();
               // 后面实现业务即可
         }
}
原文地址:https://www.cnblogs.com/qiaoyutao/p/12531932.html