redis的key或者计数器有没有递减的功能?
ringa_lee
ringa_lee 2017-04-21 11:17:22
0
3
765

比如现在想实现类似一个秒杀的功能,10个用户抢2个商品,redis或者memcache或者其它的nosql产品,有没有类似的功能,就是我有个计数器(库存,比如等于2)然后,开始抢商品的时候,前2个用户,已经将库存减到0了,当第3个人来抢的时候,计数器不会变为-1,而是还是为0,并且这个操作会返回一个操作失败,或者类似于mysql的返回影响行数为0的这种反馈信息,让我知道的?

ringa_lee
ringa_lee

ringa_lee

모든 응답(3)
迷茫

reids에는 DECR(원자 감소)이 있고 Memcache에도 감소 기능이 있습니다. 차이점은 redis의 원자 감소는 0이 되면 음수가 되고 Memcache는 항상 0이 된다는 것입니다.

小葫芦

아니요. -1이 될 것이므로 스스로 판단해야 할 것 같습니다.

伊谢尔伦

낙관적 잠금 솔루션

락을 확인하지 않고 직접 전달하되, 전달 후 버전번호를 확인하여 올바르게 동작하지 않거나 그렇지 않으면 롤백(트랜잭션 지원 필요)

한 가지 문제는 2번과 3번 순서의 사용자는 얻지 못했을 수도 있지만 4번과 5번 순서의 사용자는 얻었을 수도 있다는 점입니다. (이 경우에는 테스트용 데모를 작성해 보면 알 수 있습니다.)

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿