秒杀商品列表的增量更新
每分钟执行查询秒杀商品表,将符合条件的记录并且缓存中不存在的秒杀商品存入缓存

/*** 刷新秒杀商品 */@Scheduled(cron="0 * * * * ?")public void refreshSeckillGoods(){System.out.println("执行了任务调度"+new Date());    //查询所有的秒杀商品键集合 List ids = new ArrayList( redisTemplate.boundHashOps("seckillGoods").keys()); //查询正在秒杀的商品列表   TbSeckillGoodsExample example=new TbSeckillGoodsExample(); Criteria criteria = example.createCriteria(); criteria.andStatusEqualTo("1");//审核通过 criteria.andStockCountGreaterThan(0);//剩余库存大于 0criteria.andStartTimeLessThanOrEqualTo(new Date());//开始时间小于等于当前时间 criteria.andEndTimeGreaterThan(new Date());//结束时间大于当前时间   criteria.andIdNotIn(ids);//排除缓存中已经有的商品    List<TbSeckillGoods> seckillGoodsList=
seckillGoodsMapper.selectByExample(example);
//装入缓存  for( TbSeckillGoods seckill:seckillGoodsList ){redisTemplate.boundHashOps("seckillGoods").put(seckill.getId(),
seckill); }System.out.println("将"+seckillGoodsList.size()+"条商品装入缓存"); }

过期秒杀商品的移除
每秒中在缓存的秒杀上皮列表中查询过期的商品,发现过期同步到数据库,并在缓存中移除 该秒杀商品

/*** 移除秒杀商品 */@Scheduled(cron="* * * * * ?")public void removeSeckillGoods(){System.out.println("移除秒杀商品任务在执行"); //扫描缓存中秒杀商品列表,发现过期的移除 List<TbSeckillGoods> seckillGoodsList =
redisTemplate.boundHashOps("seckillGoods").values(); for( TbSeckillGoods seckill:seckillGoodsList ){if(seckill.getEndTime().getTime()<new Date().getTime()  ){//如果结束日期
小于当前日期,则表示过期 seckillGoodsMapper.updateByPrimaryKey(seckill);//向数据库保存记录 redisTemplate.boundHashOps("seckillGoods").delete(seckill.getId());//移除缓存数
据 System.out.println("移除秒杀商品"+seckill.getId()); }   }System.out.println("移除秒杀商品任务结束");   }

转载于:https://blog.51cto.com/13517854/2312865

Java之品优购课程讲义_day20(2)相关推荐

  1. Java之品优购课程讲义_day20(5)

    资源过滤与变量替换 修改 pom.xml ,在 build 节点中添加如下配置 <filters><filter>src/main/resources/filters/db_$ ...

  2. Java之品优购课程讲义_day19(6)

    品优购-秒杀下单 4.1 需求分析 商品详细页点击立即抢购实现秒杀下单,下单时扣减库存.当库存为 0 或不在活动期 范围内时无法秒杀. 4.2 后端代码 4.2.1 服务接口层 修改 pinyougo ...

  3. Java之品优购课程讲义_day05(8)

    5.1 最简单的 FastDFS架构 5.1 FastDFS安装 FastDFS 安装步骤非常繁琐,我们在课程中不做要求.已经提供单独的<FastDFS 安装部署文档>供学员们课后阅读. ...

  4. Java之品优购课程讲义_day05(4)

    电商概念及表结构分析 2.1 电商概念 SPU与 SKU SPU = Standard Product Unit ( 标 准 产 品 单 位 ) SPU 是商品信息聚合的最小单位,是一组可复用.易检索 ...

  5. Java之品优购课程讲义_day01(8)

    4.1.1 商家管理后台 构建 web 模块 pinyougou-shop-web 与运营商管理后台的构建方式类似.区别: (1)定义 tomcat 的启动端口为 9102 (2)springmvc. ...

  6. Java之品优购课程讲义_day17(2)

    结算页-收件人地址选择 2.1 需求与数据库分析 2.1.1 需求描述 在结算页实现收件人地址选择功能 2.1.2 数据库结构分析 Tb_address 为地址表 2.1 准备工作 2.1.1 生成代 ...

  7. Java之品优购课程讲义_day16(2)

    2.1 后端控制层 实现思路: (1)从 cookie 中取出购物车 (2)向购物车添加商品 (3)将购物车存入 cookie pinyougou-cart-web 工程新建 CartControll ...

  8. Java之品优购课程讲义_day08(7)

    4.1.1 Hash类型操作 创建测试类 TestHash (1)存入值 @Test public void testSetValue(){ redisTemplate.boundHashOps(&q ...

  9. Java之品优购课程讲义_day12(2)

    1.1 FTL指令 1.1.1 assign指 令 此指令用于在页面上定义一个变量 (1)定义简单类型: <#assign linkman="周先生"> 联系人:${l ...

最新文章

  1. 面试官:为什么要尽量避免使用 IN 和 NOT IN 呢?
  2. 霹雳小组4显示不了服务器,霹雳小组4-指令码
  3. python中有效的变量名有哪些_python 如何使用变量名
  4. [专栏目录]-ATF/FF-A/specification学习 -- ongoing
  5. openssl加密http网站过程1
  6. java thread 多线程_java用Thread方式创建多线程
  7. c理c利用计算机怎么弹,通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的...
  8. ZZULIOJ 1104: 求因子和(函数专题)
  9. 大屏监控系统实战(15)-打包上线及总结
  10. 关于在nodejs上使用es6特性
  11. 编译OpenJDK8:CreateJars.gmk/BuildJdk.gmk/Main.gmk/错误
  12. JavaScript 实现页面跳转的几种方式
  13. 约翰·冯·诺依曼的开挂人生
  14. java继承动物类_Java之继承
  15. 关于资金调拨系统的设计方法论
  16. cannot access memory
  17. Unity开发者的C#内存管理
  18. Ubuntu16_18建立返回桌面、显示桌面的快捷图标的特殊方法
  19. 【C/C++学院】0901-设计模式的汇总演练
  20. 最短路Dijkstra+Floyd

热门文章

  1. 24c04硬件地址位_硬件刷题篇(一)
  2. python四则运算器tkinter_Python基于Tkinter的二输入规则器(乞丐版)
  3. java mysql curd_javaweb中为mysql的curd多个值的语句
  4. oracle中通过distinct为什么过滤不了重复的数据_spark | 手把手教你用spark进行数据预处理...
  5. 文本编辑软件哪个好_过年倒计时软件哪个好 过年倒计时软件推荐
  6. android 手机铃声设置铃声设置,Android 修改系统来电铃声
  7. 模块A:大数据平台搭建(容器环境)
  8. Spring Boot基础学习笔记08:Spring Boot整合Redis
  9. Spring Boot基础学习笔记05:Spring Boot多环境配置
  10. Python数据分析学习笔记04:Pandas基础