A类a方法加了事务,a方法里加了redis锁,调用B类b方法,b方法加了redis锁。
会导致b方法里锁释放了,但整体是一个事务,也就是还没提交时,b方法又查询了数据库导致查询到了事务提交前的数据,最后两个线程都改变了数据库数据,但结果是错的。
应该能用事务传播级别解决
现在采用在a方法调用处web层加锁,a方法里锁取消。这样保证整体事务提交后,下一个线程才继续,数据一致。
A类a方法加了事务,a方法里加了redis锁,调用B类b方法,b方法加了redis锁。
会导致b方法里锁释放了,但整体是一个事务,也就是还没提交时,b方法又查询了数据库导致查询到了事务提交前的数据,最后两个线程都改变了数据库数据,但结果是错的。
应该能用事务传播级别解决
现在采用在a方法调用处web层加锁,a方法里锁取消。这样保证整体事务提交后,下一个线程才继续,数据一致。