要先配置好服务端,项目中在正常使用redis
    pom引用

    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-starter-data-redis</artifactId>
    4. </dependency>

    配置文件

    1. import org.springframework.context.annotation.Bean;
    2. import org.springframework.context.annotation.Configuration;
    3. import org.springframework.data.redis.connection.RedisConnectionFactory;
    4. import org.springframework.data.redis.listener.RedisMessageListenerContainer;
    5. /**
    6. * @author X-MD
    7. * @Date 2020/9/25 0025
    8. * @description:
    9. **/
    10. @Configuration
    11. public class RedisListenerConfig {
    12. @Bean
    13. RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
    14. RedisMessageListenerContainer container = new RedisMessageListenerContainer();
    15. container.setConnectionFactory(connectionFactory);
    16. return container;
    17. }
    18. }

    监听文件(触发处理业务)

    1. import lombok.extern.slf4j.Slf4j;
    2. import org.springframework.data.redis.connection.Message;
    3. import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
    4. import org.springframework.data.redis.listener.RedisMessageListenerContainer;
    5. import org.springframework.stereotype.Component;
    6. /**
    7. * @author X-MD
    8. * @Date 2020/9/25 0025
    9. * @description:
    10. **/
    11. @Component
    12. @Slf4j
    13. public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
    14. public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
    15. super(listenerContainer);
    16. }
    17. @Override
    18. public void onMessage(Message message, byte[] pattern) {
    19. // // 用户做自己的业务处理即可,注意message.toString()可以获取失效的key
    20. String expiredKey = message.toString();
    21. log.info("------------------redis key 失效; key = " + expiredKey);
    22. if (expiredKey.startsWith("delay")) {
    23. // 获取订单orderNO
    24. String orderNo = expiredKey.substring(expiredKey.lastIndexOf(":") + 1);
    25. // 将待支付的订单改为已取消(超时未支付)
    26. System.out.println("orderNo" + orderNo);
    27. }
    28. }
    29. }

    向redis里设置值

    import com.redis.config.IbaseRedisService;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author X-MD
     * @Date 2020/9/25 0025
     * @description:
     **/
    @RequestMapping("/res")
    @RestController
    @Slf4j
    public class RedisListener {
    
        @Autowired
        IbaseRedisService ibaseRedisService;
    
        @GetMapping
        public void test(){
            ibaseRedisService.set("delay:121221212","",60L,0);
        }
    }