SpringBoot监听Redis的Key失效,并执行回调方法
修改Redis配置文件redis.conf,将notify-keyspace-events Ex配置项解开注释,第1075行左右。
 
 Redis监听配置类
@Configuration
public class RedisListenConfig {
    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory factory){
        RedisMessageListenerContainer container=new RedisMessageListenerContainer();
        container.setConnectionFactory(factory);
        return container;
    }
}
 
监听带key失效的回调方法
@Component
public class KeyExpiredListener extends KeyExpirationEventMessageListener {
    public KeyExpiredListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }
    /**
     * 使用该方法监听,当Redis的key失效的时候执行该方法
     */
    @Override
    public void onMessage(Message message, byte[] pattern) {
        //过期的key
      String expireKey=message.toString();
        System.out.println("该key已经失效 = " + expireKey);
    }
}
 
编写测试类,添加一个key到Redsi中
    @Test
    public void redisKeyExpireListen(){
       String key="userId";
       redisTemplate.opsForValue().set(key,"001",1, TimeUnit.MINUTES);
    }
 
结果
 