实现需求:处理订单过期自动取消,比如下单30分钟未支付自动更改订单状态

实现方案1:

  1. 使用Redis Key自动过期出发事件通知
  2. 使用定时任务30分钟后检查
  3. 按照每分钟轮训检查

使用Redis Key自动过期机制
当我们的key失效时,可以执行我们的客户端回调监听的方法。
需要在Redis中配置:
notify-keyspace-events “Ex”

SpringBoot整合key失效监听

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

@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}

/*** 待支付*/
private static final Integer ORDER_STAYPAY = 0;
/*** 失效*/
private static final Integer ORDER_INVALID = 2;
@Autowired
private OrderMapper orderMapper;/*** Redis失效事件 key** @param message* @param pattern*/
@Override
public void onMessage(Message message, byte[] pattern) {String expiraKey = message.toString();// 根据key查询 value 如果还还是为待支付状态 将订单改为已经超时~~OrderEntity orderNumber = orderMapper.getOrderNumber(expiraKey);System.out.println(expiraKey);if (orderNumber == null) {return;}if (orderNumber.getOrderStatus().equals(ORDER_STAYPAY)) {// 将订单状态改为已经失效orderMapper.updateOrderStatus(expiraKey, ORDER_INVALID);}
}

}

Redis中的自动过期机制相关推荐

  1. Redis自动过期机制之key的过期监听(7)

    Redis中的自动过期机制 前言 1.使用Redis Key自动过期机制 2.Springboot整合key过期监听 2.1. 创建表 order_number 2.2核心代码 2.2.1 核心代码 ...

  2. Redis中key的过期时间

    Redis中key的过期时间 背景 实际项目开发中,我们经常会用到redis进行缓存存储,那么redist中key设置与不设置缓存时间,会给我们日常开发中带来哪些影响呢? 场景1:设置了key但是没有 ...

  3. 在Redis中设置了过期时间的Key,需要注意哪些问题?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:千山qianshan juejin.im/post/5d6b ...

  4. 在 Redis 中设置了过期时间的 Key,需要注意哪些问题?

    熟悉Redis的同学应该知道,Redis的每个Key都可以设置一个过期时间,当达到过期时间的时候,这个key就会被自动删除. 在为key设置过期时间需要注意的事项 1. DEL/SET/GETSET等 ...

  5. 【干货】在Redis中设置了过期时间的Key怎么办?

    熟悉Redis的同学应该知道,Redis的每个Key都可以设置一个过期时间,当达到过期时间的时候,这个key就会被自动删除. 在为key设置过期时间需要注意的事项 1. DEL/SET/GETSET等 ...

  6. Redis中两种持久化机制RDB和AOF

    redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失.幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Ap ...

  7. Redis 中两种持久化机制详解

    Redis 持久化机制(快照.AOF) 快照 (Snapshot) 1. 客户端方式之 BGSAVE(多线程执行) 2. 客户端方式之 SAVE(单线程执行) 3. 服务器配置方式之 配置快照触发条件 ...

  8. 在Redis中设置了过期时间的Key注意事项

    作者:千山qianshan juejin.im/post/5d6bda096fb9a06acc009dc8 熟悉Redis的同学应该知道,Redis的每个Key都可以设置一个过期时间,当达到过期时间的 ...

  9. 设置过期时间_在Redis中设置了过期时间的Key,需要注意哪些问题?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:千山qianshan juejin.im/post/5d6b ...

最新文章

  1. Python 格式化输出和while循环的两个小练习
  2. md5碰撞Java_java现在MD5加密不安全了吗?
  3. javascript精要(1)-script元素
  4. Linux系统下UDP发送和接收广播消息小例子
  5. mysql date time year_YEAR、DATE、TIME、DATETIME和TIMESTAMP详细介绍[MySQL数据类型]
  6. 计算机专业性特有的道德要求,什么是通信科学技术人员职业道德的双重性?
  7. 解决/usr/local/lib/libglog.so.0: error adding symbols: DSO missing from command line
  8. HTML中点击div旋转,html – 180度旋转的div只能从一侧点击
  9. Django基础之中间件
  10. ACE admin 后台管理框架
  11. CGLIB代理使用与原理详解
  12. 美团外卖离线数仓建设实践
  13. 利用外观模式Java投资理财_Java设计模式之外观模式和装饰器模式的设计(精选)...
  14. 101个CV模型集体开源,魔搭社区视觉AI深度解析
  15. UVA, 563 Crimewave
  16. LeetCode——反转链表
  17. java蓝牙程序怎么调试_蓝牙BLE调试助手软件源码
  18. 股市的起源发展和意义
  19. html5 水流旋涡,HTML5 金色漩涡动画
  20. 牛牛和DRB迷宫Ⅰ【动态规划】

热门文章

  1. python中的帮助_在Python中使用help帮助
  2. tkinter 笔记 :主体框架窗口内容
  3. 论文笔记:[ICLR 2020] Tips for prospective and early-stage PhD students
  4. R语言实战应用精讲50篇(三十一)-R语言入门系列-tidyverse数据分析流程
  5. 机器学习第8天:IPyhon与Jupyter notebook
  6. Python编程基础:第三十七节 石头剪刀布游戏Rock, Paper, Scissors Game
  7. 【机器学习PAI实践三】雾霾成因分析
  8. 35+ Top Apache Tomcat Interview Questions And Answers【转】
  9. 史上最全的MySQL高性能优化实战总结!
  10. Flask部署和分发