高洛峰2017-04-18 10:05:55
코드의 의미를 잘 이해하지 못하고 설명과도 일치하지 않는 것 같습니다.
redis를 사용하는 것이 불가능하지는 않지만 효율성이 다소 낮을 수 있습니다. 이 문제를 해결하려면 낙관적 잠금을 사용하는 것이 좋습니다.
예:
주문 테이블에 버전 필드가 있다고 가정합니다. 이 필드는 한 방향으로만 증가할 수 있습니다(일반적으로 +1). 선택할 때 version
도 확인하세요.
으아악
사용자 A와 사용자 B가 특정 기간 내에 order_id=1, version=1인 주문을 차례로 또는 동시에 찾았다고 가정합니다. UPDATE 중 mysql 행 잠금이 존재하기 때문에 단 한 명의 사용자만 발생합니다. UPDATE가 성공하고(1행이 영향을 받음), 다른 사용자의 UPDATE가 실패(0행이 영향을 받음)한 다음, UPDATE 후 반환된 행 수를 기준으로 사용자가 성공적으로 주문을 가져왔는지 여부를 판단할 수 있습니다.
회신하다
0