esperar / dev.playground

Khope's Youtube for discussing various topics related to software.
4 stars 0 forks source link

redis incr #15

Open MagicalLas opened 3 weeks ago

MagicalLas commented 3 weeks ago

https://www.youtube.com/watch?v=q7F5MvhcZ50

이 영상에 나온 incr에 대한 내용은 조금 오해가 있는 것 같아요.

여러 클라이언트에서 incr를 했을 때 요청을 하나씩 처리하기때문에 incr이 무시되는 경우는 없습니다. incr은 get -> set이 이미 묶여있는 구조니까요.

로직에서 get -> some code -> incr을 수행한다면 영상처럼 문제가 있을 수 있지만, get -> code -> incr -> incr 결과 체크로 해결이 가능합니다.

esperar commented 3 weeks ago

여러 클라이언트에서 incr를 했을 때 요청을 하나씩 처리하기때문에 incr이 무시되는 경우는 없습니다.

음 혹시 영상에 어떤 부분에 대해서 incr이 무시되는 경우가 있을 수 있다라는 생각을 가지게 된 것일까요? 무시된다는 것이 incr 명령어가 수행되지 않았다로 이해해도 괜찮을까요? 맞다면 제가 전달하고싶은바가 잘못된 것 같아서 수정이 필요해보입니다.

로직에서 get -> some code -> incr을 수행한다면 영상처럼 문제가 있을 수 있지만, get -> code -> incr -> incr 결과 체크로 해결이 가능합니다.

그렇군요! 영상에서의 예시 자습신청에서 자습 최대 인원을 묶는 조건과 incr를 수행하는 연산이 나누어져 있을 때 초과될 수 있다는 문제를 언급했는데, get. code incr incr에서 incr를 수행하기 전에 한 번 더 체크해주시는 것을 언급해 주신것일까요? 이것도 하나의 트랜잭션이나 lua로 묶어서 해결해볼 수 있는 부분일까요?