比如现在想实现类似一个秒杀的功能,10个用户抢2个商品,redis或者memcache或者其它的nosql产品,有没有类似的功能,就是我有个计数器(库存,比如等于2)然后,开始抢商品的时候,前2个用户,已经将库存减到0了,当第3个人来抢的时候,计数器不会变为-1,而是还是为0,并且这个操作会返回一个操作失败,或者类似于mysql的返回影响行数为0的这种反馈信息,让我知道的?
迷茫2017-04-21 11:19:22
reids에는 DECR(원자 감소)이 있고 Memcache에도 감소 기능이 있습니다. 차이점은 redis의 원자 감소는 0이 되면 음수가 되고 Memcache는 항상 0이 된다는 것입니다.
伊谢尔伦2017-04-21 11:19:22
낙관적 잠금 솔루션
락을 확인하지 않고 직접 전달하되, 전달 후 버전번호를 확인하여 올바르게 동작하지 않거나 그렇지 않으면 롤백(트랜잭션 지원 필요)
한 가지 문제는 2번과 3번 순서의 사용자는 얻지 못했을 수도 있지만 4번과 5번 순서의 사용자는 얻었을 수도 있다는 점입니다. (이 경우에는 테스트용 데모를 작성해 보면 알 수 있습니다.)