public boolean lock(String key, String value) {
Boolean locked = false;
int tryCount = 3;
while (!locked && tryCount > 0) {
locked = redisTemplate.opsForValue().setIfAbsent(key, value, 1, TimeUnit.MINUTES);
if(locked==null){
locked= false;
}
tryCount--;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
log.error("线程被中断" + Thread.currentThread().getId(), e);
}
}
return locked;
}
public boolean unlock(String key) {
final boolean releaseLock = Boolean.TRUE.equals(redisTemplate.delete(RedisContents.LOCK+ key));
if(releaseLock){
log.info("[redisTemplate redis] 释放锁 缓存 url:{}",key);
}
return releaseLock;
}
String lockKey = RedisContents.LOCK + "wordCheck_" + checkWordDTO.getBatchId();
if (!redisUtil.lock(lockKey, "1")) {
throw new ServiceException("操作太频繁,请稍后再试");
}
redisUtil.unlock(lockKey);

