注意事项分析:
1、业务逻辑可能出现异常,应用tryfinally
2、系统可能出现宕机等意外情况,应用定时解锁
3、上锁与定时之间,Redis异常,导致成功上锁但定时失败,应用将上锁定时保持原子性
4、上锁解锁之间应设定唯一值,避免解锁错乱
5、为防止因特殊原因导致业务逻辑未在定时时间内完成并解锁,应进行锁续命
解决方案:
使用Redisson
RLock redissonLock = Redisson.getLock(lockKey);
try{
redissonLock.lock();
//todo
} finally {
redissonLock.unlock();
}