这是在一个方法调用下面代码的部分

if (!this.checkSoldCountByRedisDate(key, limitCount, buyCount, endDate)) {// 标注10:throw new ServiceException("您购买的商品【" + commodityTitle + "】,数量已达到活动限购量");}

2、下面是判断超卖的方法

/** 根据缓存数据查询是否卖超 *///标注:1;synchronized private synchronized boolean checkSoldCountByRedisDate(String key, int limitCount, int buyCount, Date endDate) {boolean flag = false;if (redisUtil.exists(key)) {//标注:2;redisUtil.exists(key)Integer soldCount = (int) redisUtil.get(key);//标注:3;redisUtil.get(key)Integer totalSoldCount = soldCount + buyCount;if (limitCount > (totalSoldCount)) {flag = false;//标注:4;flag = false} else {if (redisUtil.tryLock(key, 80)) {//标注:5;rdisUtil.tryLock(key, 80)redisUtil.remove(key);// 解锁 //标注:6;redisUtil.remove(key)redisUtil.set(key, totalSoldCount);//标注:7;redisUtil.set(key, totalSoldCount)flag = true;} else {throw new ServiceException("活动太火爆啦,请稍后重试");}}} else {//标注:8;redisUtil.set(key, new String("buyCount"), DateUtil.diffDateTime(endDate, new Date()))redisUtil.set(key, new String("buyCount"), DateUtil.diffDateTime(endDate, new Date()));flag = false;}return flag;}

3、上面提到的redisUtil类中的方法,其中redisTemplate为org.springframework.data.redis.core.RedisTemplate;这个不了解的可以去网上找下,spring-data-redis.jar的相关文档,贴出来redisUtil用到的相关方法:

/*** 判断缓存中是否有对应的value* * @param key* @return*/public boolean exists(final String key) {return redisTemplate.hasKey(key);}/*** 将键值对设定一个指定的时间timeout.* * @param key* @param timeout*            键值对缓存的时间,单位是毫秒* @return 设置成功返回true,否则返回false*/public boolean tryLock(String key, long timeout) {boolean isSuccess = redisTemplate.opsForValue().setIfAbsent(key, "");if (isSuccess) {//标注:9;redisTemplate.expireredisTemplate.expire(key, timeout, TimeUnit.MILLISECONDS);}return isSuccess;}/*** 读取缓存* * @param key* @return*/public Object get(final String key) {Object result = null;ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();result = operations.get(key);return result;}/*** 删除对应的value* * @param key*/public void remove(final String key) {if (exists(key)) {redisTemplate.delete(key);}}/*** 写入缓存* * @param key* @param value* @return*/public boolean set(final String key, Object value) {return set(key, value, null);}/*** * @Title: set* @Description: 写入缓存带有效期* @param key* @param value* @param expireTime* @return boolean    返回类型* @throws*/public boolean set(final String key, Object value, Long expireTime) {boolean result = false;try {ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();operations.set(key, value);if (expireTime != null) {redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);}result = true;} catch (Exception e) {e.printStackTrace();}return result;}

java 用redis如何处理电商平台,秒杀、抢购超卖相关推荐

  1. Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战

    Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台-  什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...

  2. JAVA毕设项目社区电商平台系统(java+VUE+Mybatis+Maven+Mysql)

    JAVA毕设项目社区电商平台系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Web ...

  3. java计算机毕业设计社区电商平台系统源码+系统+数据库+lw文档+mybatis+运行部署

    java计算机毕业设计社区电商平台系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计社区电商平台系统源码+系统+数据库+lw文档+mybatis+运行部署 开发软件:i ...

  4. java毕业设计基于的电商平台的设计与实现Mybatis+系统+数据库+调试部署

    java毕业设计基于的电商平台的设计与实现Mybatis+系统+数据库+调试部署 java毕业设计基于的电商平台的设计与实现Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 ...

  5. 电商平台-“秒杀”系统技术难题及解决方案

    电商平台-"秒杀"系统技术方案 文章目录 电商平台-"秒杀"系统技术方案 前言 一.什么是秒杀? 二.秒杀的技术难点? 1.避免对现有网站的冲击 2.高效解决网 ...

  6. java毕业设计社区果蔬电商平台演示录像源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计社区果蔬电商平台演示录像源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计社区果蔬电商平台演示录像源码+lw文档+mybatis+系统+mysql数据库+调 ...

  7. 电商平台 高并发 微服务 方案_Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战...

    Java生鲜电商平台- 什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定的时间内,无论商品是否秒杀完毕,该场次的秒杀活动都会结束.这种 ...

  8. [附源码]java毕业设计社区生鲜电商平台

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  9. [附源码]计算机毕业设计springboot基于Java的日用品在线电商平台

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  10. java 超卖_Java生鲜电商平台-秒杀系统如何防止超买与超卖?(小程序/APP)

    本文主要是通过实际代码讲解,帮助你一步步搭建一个简易的秒杀系统.从而快速的了解生鲜电商秒杀系统的主要难点,并且迅速上手实际项目. 我对生鲜电商秒杀系统文章的规划: 从零开始打造简易秒杀系统:乐观锁防止 ...

最新文章

  1. 让神经网络给符号AI“打工”,MIT和IBM联合解决深度学习痛点,未来将用于自动驾驶...
  2. percona innobackupex 使用
  3. 图形—9patch,shape ,selector
  4. R语言进阶 | 变量赋值背后的机制与R语言内存优化
  5. mysql bench linux_MySQL Study之--Linux下安装MySQL workbench工具
  6. Servlet是否单例?
  7. Bzoj4199:[NOI2015]品酒大会
  8. [AT2558]Many Moves
  9. js获取地址栏url以及获取url参数
  10. 什么是back annotation
  11. 淘宝产品,为什么转化率还是这么低?
  12. windows 挂载百度网盘/阿里云盘等(网盘变本地硬盘) alist + raidrive
  13. 学习 Java8 函数式编程 (二)
  14. TOM带你玩充电 篇三:15款5号电池横评及选购建议——南孚金霸王小米宜家耐时品胜一个都逃不了...
  15. Gitee 自已提交的代码提交人头像却为他人
  16. 我,27岁,程序员,9月无情被辞:想给做开发的提个醒…
  17. Java基础语法之数组练习——循环输出数列的值并求和
  18. 网络应用程序设计模式:浅谈CS架构与BS架构
  19. 【2012 Semifinal 1】 YetAnotherNim
  20. 刚出社会的学弟:“毕业两年月薪才35K,真是没出息啊....”

热门文章

  1. 关于git push报hook declined
  2. JavaScript基础--ECMAScript部分--李南江
  3. 如何查看计算机硬盘规格大小,台式机硬盘如何查看大小
  4. Java基础:第5-6章(重点)
  5. window的pagefile.sys和hiberfil.sys文件
  6. MSE(误差平方和)/RMSE/R²/TSS/RSS
  7. 巴蜀1471 魔兽争霸
  8. matlab求解平面度,基于MATLAB的平面度评定
  9. Intel 64/x86_64/x86/IA-32处理器标志寄存器详解(1) - 16位FLAGS(8086/80186/80286)
  10. neokylin linux s.iso,NeoKylin-Desktop-Personal-v6.0安装与基本应用实战