inflearn logo
강의

講義

知識共有

トラフィック急増に耐えるサーバーシステム設計 - Coupon発行サービス

【実習】Redis Luaで高速かつ正確に発行する

트랜잭션 내 Redis I/O 에 대한 궁금한점

解決済みの質問

42

wlgns2234

投稿した質問数 1

1

안녕하세요, 강사님
강의 잘 듣고있습니다.

들으면서 궁금한 점이 한가지 있는데요, Redis 연산의 경우 이것도 I/O 작업일텐데 트랜잭션 내부에서 사용해도 되는것인지 궁금합니다. (ex HTTP Client 와 같이 I/O 작업의 경우에는 트랜잭션 내부에서 호출하는걸 지양하는것처럼..)

java kotlin mysql docker spring-boot kafka redis

回答 1

1

apiece

안녕하세요! 감성코딩님

정말 잘 짚어주셨습니다. 말씀하신 대로 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