안녕하세요~~ 레디슨관련 질문 드립니다!
466
작성한 질문수 3
레디슨을 이용하여 락을 획득할 때
lock.tryLock 메서드 내부에서 현재 lock 이 걸려있는 상태이면 여기서 wait 상태로 스레드를 기다리는 상황인 건가요?
그렇다면 available의 결과가 false 가 된 상태는
락을 계속 얻으려고 시도하다가 결국 못받은 상황이라고 이해해도 될까요?
마지막으로 지금은 void 로 레디스 테스트를 위해 리턴값은 따로 지정하지 않았는데 만약 실무에선 해당 상황에선 보통 어떤 값을 리턴해주는게 좋을까요?
추가로..
개인적인 프로젝트에 해당로직을 사용하여 레디슨으로 Lock 을 건 상태에서 동일하게 테스트 코드를 작성하였습니다.
초기 전체 카운트를 저장한 후에 스레드 내부에서 동일한 수량으로 감소하는 로직으로 작성하였지만,
스레드 내부에서 findBy 한 엔티티의 수량이 모두 초기값으로 동일하게 나타나는 현상이 나타났습니다.. 이럴경우 lock이 제대로 이뤄지지 않은 상태로 된것일까요 아니면 스레드 테스트 환경을 잘못 작성한 것일까요...
추가 질문에 대한 개인적인 해결방안을 찾았습니다.. 레디슨 락에대한 메서드에 Transactional 어노테이션을 작성했더니 위처럼 동작하는군요... Transactional 어노테이션이 Redisson에 어떤 영향을 주었던 걸까요...
답변 1
0
해구니님 안녕하세요.
답변이 늦어져서 죄송합니다.
말씀하신대로 현재 lock 이 걸려있는 상태이면 설정한 시간만큼 락획득을 시도합니다.
lock 획득에 성공하면 true 를, 실패하면 false 를 반환하는것도 맞습니다.
테스트코드에 대해서는 사람마다 방식은 모두 다르겠지만 저는 lock 부분을 따로 클래스로 추출하여 return type 을 boolean 으로 지정한 후 테스트코드를 작성하는편입니다.
감사합니다.
레디선 테스트코드에서 채널이름은 없어도 되는건가요?
0
48
2
낙관적 락을 사용할 떄 차이점
0
127
2
동시성 검증 코드에 관한 문의
0
97
2
단일연산
0
72
2
낙관적락vs. 레디스락
0
111
2
안녕하세요. 레디슨 질문있습니다..!!
0
67
2
@Lock(OPTIMISTIC)이 필요한 이유
0
91
2
get_lock 의 timeout이 3000초 이던데 너무 긴거 아닌가요?
0
132
2
DataSource Hikari 사용 이유
0
149
2
saveAndFlush 사용 이유 문의
0
115
3
비관적 락 VS 네임드 락
0
161
3
application.yaml 에 redis 정보
0
101
2
왜 클래스 이름에 Facade 가 붙나요?
0
185
2
@Transactional 으로 인한 동시성 문제 발생 원인이 궁금합니다.
0
220
2
@modifying 이용한 동시성 제어
0
169
2
DB락과 분산락
0
263
2
NamedLock 테스트 실패
0
186
2
테스트에서 트랜잭션 어노테이션 질문 있습니다.
0
174
2
optimistic Lock 재시도 질문입니다.
0
233
2
낙관적 락 테스트 실패
0
243
2
오류?
0
1632
4
LettureLockStockFacadeTest에서 오류가 발생합니다.
1
268
2
Pessimistic Lock 전체 테스트 오류 문의
0
363
3
비관적 락 vs 레디스(Lettuce)락 비교 관련 질문
0
462
2





