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(); // 后面實現業務即可
 } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM