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

爷,独闯天下 提交于 2020-01-16 13:34:25

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

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!