Redis ‐ 동시성 이슈를 Redis로 해결하기 (2) - dnwls16071/Backend_Summary GitHub Wiki
📚 Redis를 활용해 선착순 쿠폰 발급 문제 해결
@Repository
@RequiredArgsConstructor
public class CouponCountRepository {
private final RedisTemplate<String, String> redisTemplate;
public Long incrementCouponCount() {
return redisTemplate
.opsForValue()
.increment("coupon_count");
}
}
- Redis는 기본적으로 단일 쓰레드 기반으로 동작하기 때문에 멀티 쓰레드 환경에서의 동시성 이슈가 발생할 확률이 낮다.
문제점 정리
- 분산 환경의 복잡성
- 락의 구현 복잡성
- 트랜잭션의 한계
- 잠재적인 병목 지점이 되는 리소스 = RDB
- Redis에서 카운트한 값을 RDS에 저장하는 과정에서 부하가 집중될 수 있다.
- 이는 다른 서비스의 RDB 접근에도 영향을 줄 수 있기 때문에 잠재적 병목 지점이 된다.