kye-redis 加锁代码

/**
 * 处理加锁方法
 *
 * @return
 */
public boolean tryLock(String key, boolean otherFlag) {
   if (StringUtils.isRealEmpty(key)) {
      throw new ApplicationException(ResponseCode.BILL_BATCH_NUMBER_NULL);
   }
   logger.info("加锁putIfAbsent key={}", buildLockKey(key));
   boolean flag = redisTemplate.opsForHash().putIfAbsent(buildLockKey(key),
         LOCK_TIME, DateUtils.toString(new Date()));
   logger.info("加锁putIfAbsent result={}", flag);
   if (flag) {
      redisTemplate.opsForHash().putAll(buildLockKey(key), buildLockContext());
      redisTemplate.expire(buildLockKey(key), 5L, TimeUnit.MINUTES);
      logger.info("修改加锁{}5分钟", buildLockKey(key));
   } else {
      logger.info("账单已锁", buildLockKey(key));
      if (otherFlag) {
         List<Object> values = redisTemplate.opsForHash().multiGet(buildLockKey(key),
               Arrays.asList(LOCK_TIME, LOCK_USERNAME));
         String username = (String) values.get(1);
         String lockTime = (String) values.get(0);
         throw new ApplicationException(ResponseCode.BILL_LOCKED_EDIT.getCode(),
               String.format(ResponseCode.BILL_LOCKED_EDIT.getMessage(), lockTime, username));
      }
      return false;
   }
   return true;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值