발급가능 쿠폰개수가 1인당 2개이상일 때
920
작성한 질문수 4
안녕하세요! 강의 재미있고 유익하게 잘 듣고 있습니다 :)
확장에 대해 생각해보니, Set을 이용해서는 중복방지 이상 개수 확장에 대해서 처리는 불가능 할 거 같아서요.
혹시, 2개 이상 N개 제한에 대한 확장 방법은 어떤게 있을까요??
감사합니다!
답변 2
1
류건희님 안녕하세요.
2개 이상 N 개 제한이 필요하다면 유저의 id 를 key 로 잡고 분산락을 구현하여 정합성을 보장할 것 같습니다.
류건희님 말씀대로 Set 을 이용해서는 N 개 이상의 제한이 안되기때문입니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴이에요.
쿠폰 개수를 제한해야하는 경우에는 Set 자료구조보다는 다른 자료구조를 사용하는 것이 좋을 수 있습니다. Set은 중복된 값을 허용하지 않기 때문에 한 사용자당 2개 이상의 쿠폰을 발급하는 경우에는 Set 자체로는 처리가 어려울 수 있어요.
그래서 대안으로는 리스트나 딕셔너리를 사용할 수 있어요. 이들 자료구조를 사용하면 개수를 제한할 수 있고, 중복 값도 허용할 수 있어요.
예를 들어, 리스트를 사용해서 한 사용자가 발급받을 수 있는 쿠폰 개수를 제한하는 방법은 다음과 같이 구현할 수 있어요.
- 리스트를 선언하고 초기값으로 한 사용자당 최대 발급 가능한 쿠폰 개수인 N을 저장합니다.
- 쿠폰을 발급할 때마다 해당 사용자의 리스트 값을 1씩 감소시킵니다.
- 감소된 값이 0보다 작거나 같으면 더 이상 쿠폰을 발급할 수 없다는 의미입니다.
딕셔너리를 사용하는 경우에는 사용자 별로 발급받은 쿠폰 개수를 관리하는 방식으로 처리할 수 있어요. 예를 들어, 각 사용자를 키로 가지고 그 값을 쿠폰 개수로 설정한 딕셔너리를 선언하고, 쿠폰을 발급할 때마다 해당 사용자의 값에 1을 더해주면 됩니다. 그리고 2 이상인 경우에만 쿠폰 발급 가능하도록 조건문을 추가하면 되겠죠.
이렇게 리스트나 딕셔너리를 활용해서 한 사용자당 2개 이상 N개 제한을 구현할 수 있습니다. 원하시는 방식에 맞게 선택해서 사용하시면 될 것 같아요. 개발에 참고가 되셨길 바랍니다. 감사합니다!
ApplyService와 Consumer서비스의 db공유?
0
56
2
consumer가 topic을 전부 사용하기 전에 사용자에게는 쿠폰이 발급된것으로 확인하는 과정에서 발생가능한 문제.
0
77
1
쿠폰에 관련되어서 좀 더 참고할만한 자료가 있을까요?
0
86
2
흐름정리 제가 이해한게 맞나요?
0
73
2
안되서 스트레스 받아요
-2
111
2
프로젝트 진행할때 모듈로 추가하는 이유가 궁금합니다!
0
185
2
Redis 활용하기 문제점 해결하기 부분이 이해가 잘 안됩니다...
0
213
1
카프카를 도입하고 난 뒤 로그로 보여지는 장점을 발견하지 못하고 있습니다.
0
167
2
키생성 방식에 따른 성능
0
168
2
사용자 동선에 대한 트랜잭션 문의
0
135
2
강사님 강의를 듣고 실제 프로젝트에서 이벤트 응모 시스템을 만들어 봤습니다.
0
210
1
쿠폰 발급 개수 제한
0
184
2
ApplyService 의 총 처리 시간이 궁금합니다.
0
154
1
쿠폰 생성 에러 처리에 관해서 질문이 있습니다.
0
224
2
마지막에 하신 테스트 자체는 실패하는 게 맞는거죠??
0
276
2
안녕하세요 질문 있습니다!
0
295
1
쿠폰 발급 유저 흐름에 대한 질문
0
308
2
수량 조절에 대한 질문이 있습니다.
0
231
2
kafka Producer 실행 중 에러 시 redis count 정합성 이슈
0
398
2
test 과정에서 오류가 발생합니다.
0
384
1
도커 환경설정에 대해서
0
269
2
Redis의 INCR 사용 해도 Race condition이 잡히지 않는 문제
0
599
1
consumer 모듈
0
322
2
카프카 토픽 생성오류
0
384
2





