当前位置: 代码迷 >> 综合 >> redis锁在事务提交之后再释放
  详细解决方案

redis锁在事务提交之后再释放

热度:86   发布时间:2024-01-25 01:15:45.0

发现 我们平时使用 分布式锁的方式有问题 如: try {} finnally{ 释放锁} , 如果方法有事务的话 , 进到finnally 的时候并不代表,数据已经持久化。 会导致锁提前释放,正确的做法应该是 事物完成后再释放锁。

/*** 事务结束后释放锁*/
private void unlockAfterTransaction(LockResult lockResult) {//事物完成后释放锁TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {@Overridepublic void afterCompletion(int status) {super.afterCompletion(status);distLockSservice.unlock(lockResult);}});
}