redis分布式锁抢购优惠卷

//分布式锁 @Component public class CurrentLock { @Autowired private RedisTemplate redisTemplate; //加锁方法 redis set默认情况下覆盖值, SETNX 没有我要set的key 就直接创建 并且把value放入 //如果有这个key就什么都不做返回false public boolean lock(String key,String value){ //如果返回true 说明redis中没有这个key 我是第一个到达的线程 if (redisTemplate.boundValueOps(key).setIfAbsent(value)){ //返true说明 return true; }; return false; } //释放锁 public boolean UnLock(String key,String value){ redisTemplate.delete(key); return true; } }

使用分布式锁抢购优惠券

@RestController public class RobCoupons { @Autowired private RedisTemplate redisTemplate; //yaml文件配置了常量 @Value("${com.rcm.coupon}") private String coupon; @Autowired private TabCouponTypeController tabCouponTypeController; @Autowired private TabCouponTypeUserController tabCouponTypeUserController; @Autowired private CurrentLock currentLock; private Object object; //抢购优惠券 @PostMapping("/RobCouponss") public Result RobCouponss(@RequestParam("userId") Integer userId, @RequestParam("couponId") Integer couponId) { String key = "redis_key"; //获取系统当前时间戳 当value String value = String.valueOf(System.currentTimeMillis() + 3000); //加锁 boolean lock = currentLock.lock(key, value); //用户如果拿到锁 if (lock) { //获取库存数量 Result result = tabCouponTypeController.queryRedisScore(couponId); //转类型 int i=new Double((Double) result.getData()).intValue(); //判断库存数量是否大于0 if (i> 0) { /*TabCouponTypeUserController tabCouponTypeUserController=new TabCouponTypeUserController();*/ //增加用户优惠券表绑定用户 tabCouponTypeUserController.addCoupon(couponId, userId); //库存减一 redisTemplate.boundZSetOps(coupon).incrementScore(couponId, -1); } else if (i==0) { //当redis库存售完时 /*if (i==0){*/ //修改数据库库存为0 Result result1 = tabCouponTypeController.ModifyInventory(couponId); /* }*/ return Result.Inventory_no(); }else { //抢购失败 return Result.Rob_coupons_false(); } boolean b = currentLock.UnLock(key, value); } return Result.RobCouponsTrue(); } }

原文链接:https://blog.csdn.net/yinhaoq/article/details/123481404?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165277499316782391827987%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165277499316782391827987&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-4-123481404-null-null.nonecase&utm_term=%E4%BC%98%E6%83%A0

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
文明发言,共建和谐米科社区
提交
头像

昵称

取消
昵称表情图片

    暂无评论内容