diff --git a/src/main/java/com/yn/bftl/thirdparty/modules/business/service/impl/AccountServiceImpl.java b/src/main/java/com/yn/bftl/thirdparty/modules/business/service/impl/AccountServiceImpl.java index 8c828dd..befaaf0 100644 --- a/src/main/java/com/yn/bftl/thirdparty/modules/business/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/yn/bftl/thirdparty/modules/business/service/impl/AccountServiceImpl.java @@ -80,8 +80,8 @@ @Transactional(rollbackFor = Exception.class) public boolean accountUpdate(AccountUpdateDTO accountUpdateDTO) { // 加锁,避免并发请求 - String lockKey = accountUpdateDTO.getId() + ":ACCOUNT_UPDATE"; - Boolean lock = stringRedisTemplate.opsForValue().setIfAbsent(lockKey, lockKey); + String lockKey = "ACCOUNT_UPDATE:"+ accountUpdateDTO.getId(); + Boolean lock = stringRedisTemplate.opsForValue().setIfAbsent(lockKey, "locked", 5, TimeUnit.SECONDS); int i = 1; // 拿不到锁时,睡眠一段时间然后重试,重试超过指定次数还未拿到则放弃 while (!lock) { @@ -93,10 +93,10 @@ } catch (InterruptedException e) { throw new YnceErrorException(YnceError.YNCE_000000); } - lock = stringRedisTemplate.opsForValue().setIfAbsent(lockKey, lockKey); + lock = stringRedisTemplate.opsForValue().setIfAbsent(lockKey, "locked", 5, TimeUnit.SECONDS); i ++; } - stringRedisTemplate.expire(lockKey, 5, TimeUnit.SECONDS); +// stringRedisTemplate.expire(lockKey, 5, TimeUnit.SECONDS); try { // 获取账户信息 Optional accountOptional = accountRepository.findById(accountUpdateDTO.getId());