> 文档中心 > redis抢单

redis抢单

//订单id为key,当key被占用了,这个订单就不能被其他用户抢BidCarpoolOrder bidCarpoolOrder = bidCarpoolMapper.selectById(id); if (BidOrderStatusEnum.BIDDING.name().equals(bidCarpoolOrder.getOrderStatus().name())) {     Long driverId = SecurityUtils.getUserRelationId().get(0);     boolean expire = redisCache.lock(id+"", 100);     if (!expire){  throw new BusinessException("您操作过快,请刷新重试!");     }     bidCarpoolOrder.setDriverId(driverId);     bidCarpoolOrder.setOrderStatus(BidCarpoolStatusEnum.FINISH);     bidCarpoolOrder.setCarpoolResult(true);     bidCarpoolMapper.updateById(bidCarpoolOrder); }else {     throw new BusinessException("已被抢,请刷新页面"); }
    /     * 加锁,无阻塞     * @param key     * @param expireTime     * @return     */    public Boolean lock(String key, long expireTime) { String requestId = UUID.randomUUID().toString(); Long start = System.currentTimeMillis(); //在一定时间内获取锁 Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent(key, requestId, expireTime,  TimeUnit.SECONDS); return aBoolean;    }