分布式锁redis,


分布式锁:

setnx key vel;返回1加锁成功,0说明已经加锁,

设置过去时间,sepire key time;

去重:场景一样,返回1说明已处理

提升性能,不同账户不同锁:

private static final Map TASK_LOCK_MAP = new HashMap<>();

public Lock getLock(Long taskId) {
return TASK_LOCK_MAP.getOrDefault(taskId, new ReentrantLock());
}

public void removeLock(Long taskId) {
TASK_LOCK_MAP.remove(taskId);
}
Lock lock = evaluateTaskLock.getLock(task.getId());
try {
lock.lock();
manualTaskTimePointMGService.addPortraitTimePoint(drawEvaluateTaskId, TimePointType.PAUSE);
} catch (Exception e) {
log.error("暂停异常, taskId: {}", drawEvaluateTaskId, e);
} finally {
lock.unlock();
}