redis key过期监听实现延时队列

         延时队列有多种实现方式,可以使用mq来实现,也可以通过redis key过期事件监听来实现。

         下面就来一个redis key过期事件监听的demo.

          1.先引入redis的依赖。

        


            spring-boot-starter-data-redis
            org.springframework.boot
        

 

          2.配置redis监听器

  

@Configuration
public class RedisConfig {

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

        3.实现监听处理逻辑

@Component
@Slf4j
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {


    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }

    @Override
    public void onMessage(Message message, byte[] pattern) {
        String expiredKey = message.toString();
        log.info("expiredKey:{}", expiredKey);
    }
}

    4.添加一个有过期时间的key

redis key过期监听实现延时队列_第1张图片    5. 控制台打印出过期key.

 

2020-07-24 09:50:25.220  INFO 924 --- [    container-2] c.e.d.config.RedisKeyExpirationListener  : expiredKey:a

  我们需要在onMessage方法里面实现自己的业务逻辑。

你可能感兴趣的:(redis)