트랜잭션 내 Redis I/O 에 대한 궁금한점
안녕하세요, 강사님
강의 잘 듣고있습니다.
들으면서 궁금한 점이 한가지 있는데요, Redis 연산의 경우 이것도 I/O 작업일텐데 트랜잭션 내부에서 사용해도 되는것인지 궁금합니다. (ex HTTP Client 와 같이 I/O 작업의 경우에는 트랜잭션 내부에서 호출하는걸 지양하는것처럼..)
回答 1
1
안녕하세요! 감성코딩님
정말 잘 짚어주셨습니다. 말씀하신 대로 Redis 호출도 네트워크 I/O이므로, 트랜잭션 안에서 호출할 때는 HTTP Client와 같은 관점으로 주의해야 합니다.
해당 실습 코드를 보면 CouponService.issue()에 @Transactional이 붙어 있고, 그 안에서 Redis를 호출하고 있어요. 따라서 트랜잭션을 짧게 유지하는 관점에서는 개선할 부분이 맞습니다.
이 챕터는 Redis Lua로 재고 차감을 원자적으로 처리하는 단계이고, 이후 단원 비동기 큐 실습에서는 issue()의 @Transactional을 제거하고 DB 저장을 별도의 트랜잭션으로 분리합니다.
다만 트랜잭션과 별개로 Redis와 DB 사이의 정합성 문제는 트랜잭션 분리만으로 해결되지 않으므로, 실패 복구와 정합성 보정도 함께 고려해야 합니다. 이 부분도 이후 뒷단원에서 진행하니 아키텍처가 개선되는 것을 느끼면서 내용을 학습해주시면 좋을 것 같습니다.
감사합니다.
30강
0
8
0
선생님 안녕하세요.
0
15
0
https 도메인
0
17
0
로그인 확인
0
26
2
TTL 산정 기준
0
28
1
ttl 산정 기준
0
28
1
Git Bash Winpty 설정
0
21
1
git 설치하기
0
23
1
airtable 리스트가 조회 안됩니다
0
40
1
조회 대상 행이 적을 때도 Using filesort 제거를 고려해야 하나요?
0
41
2
정처기 2026-3 실기 문의
0
83
2
정처기 실기 3회 컴싸 사용 여부
0
50
1
자바 킴쌤 클래스 기초part2.pdf파일은 어디서 받을 수 있나요?
0
31
1
Jib 빌드가 83%에서 멈추는 문제 해결(windows 사용자)
1
41
1
11강 [실습] Docker로 MySQL1 분만에 실행하기
0
98
2
11강 [실습] Docker로 MySQL1 분만에 실행하기
0
66
2
@Modifying에 관하여
1
77
1
Issuance 테이블에 status, couponId 인덱스가 꼭 필요할까요?
2
85
1
부하 테스트 시 설정 관련 질문드립니다
1
116
2
kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.
2
127
1
domain에 @Entity 와 Repository를 함께 둔 이유가 궁금합니다
1
110
1
Jib 이미지 빌드에서 docker credential 관련으로 이슈가 있다면
1
143
1
스크립트에 대해 질문 있습니다.
1
111
1
같은 사용자가 연속된 중복 호출할 경우 어떻게 되는지 궁금합니다!
2
126
1

