分布式锁redis,

分布式锁:

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

设置过去时间,sepire key time;

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

 

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

private static final Map<Long, ReentrantLock> 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();
}
posted @ 2022-01-05 14:59  91程序猿  阅读(55)  评论(0编辑  收藏  举报