동시성 제어를 Redisson과 AOP로 해결하기 #140
RTUnu12
started this conversation in
Show and tell
Replies: 1 comment
-
@transactional - timeout제가 조금 찾아보니까 해당 어노테이션에 timeout 을 설정하는 것은 해당 시간이 지날 때 까지 로직이 수행이 되지 않는다면 그 즉시, 롤백을 진행한다고 하네요? 더 나아가서 궁금한게 많은데, MySQL 의 기본 격리 수준이 REPEATABLE READ 인데 다른 트랜잭션에서 접근해서 변경된 데이터에 접근한다는게 될까 싶기도 해요 궁금한 내용
등등 ,, |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
문제 상황
Redisson
Spring Boot에서의 설정
일반적인 구현
불편한데요?
@Transactional
처럼, 어노테이션만 추가함으로써 적용되는 방식을 생각해야 합니다.AOP로 구현하기
RedissonLock
RedissonLockAspect
@RedissonLock
어노테이션이 메소드에 적용되면 위 기능이 동작하게 됩니다.TransactionAspect
@RedissonLock
이 적용된 메소드일 경우 Propagation.REQUIRES_NEW 옵션을 지정해 부모 트랜잭션의 유무에 관계없이 별도의 트랜잭션으로 동작하고, 트랜젝션 커밋 이후 락이 해제되도록 설정해야 합니다.기존 메소드에 적용
@Transactional
을 제거하고, 저희가 만들었던@RedissonLock(value = "#적용할 파라미터 이름")
을 메소드에 적용합니다.테스트 결과
제한 인원이 5명인 모임을 생성합니다.
한번에 200명이 요청하는 시나리오를 만듭니다.
결과
참고
Beta Was this translation helpful? Give feedback.
All reactions