zoukankan      html  css  js  c++  java
  • 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();
                   // 后面实现业务即可
             }
    }
  • 相关阅读:
    实验楼之Linux快捷、用户及文件权限、文件查看
    《生物信息学》——李霞;;生信概念
    MySQL 之 导出导入数据
    MySQL 之 扩展例子
    MySQL之创、增、删、改、查
    R 中数据导入
    神经网络,25个术语
    Python之文件输入输出,
    爬虫之BeautifulSoup, CSS
    Linux软连接和硬链接
  • 原文地址:https://www.cnblogs.com/qiaoyutao/p/12531932.html
Copyright © 2011-2022 走看看